Empecé a usar StringBuilder
con preferencia a la concatenación recta, pero parece que falta un método crucial. Por lo tanto, he implementado por mí mismo, como una extensión:¿Estoy minando la eficiencia de StringBuilder?
public void Append(this StringBuilder stringBuilder, params string[] args)
{
foreach (string arg in args)
stringBuilder.Append(arg);
}
Esto convierte el siguiente desastre:
StringBuilder sb = new StringBuilder();
...
sb.Append(SettingNode);
sb.Append(KeyAttribute);
sb.Append(setting.Name);
En esto:
sb.Append(SettingNode, KeyAttribute, setting.Name);
que podría utilizar sb.AppendFormat("{0}{1}{2}",...
, pero esto parece incluso menos preferido, y aún más difícil de leer. ¿Mi extensión es un buen método, o de alguna manera socava los beneficios de StringBuilder
? No estoy tratando de optimizar algo prematuramente, ya que mi método es más sobre la legibilidad que la velocidad, pero también me gustaría saber que no me estoy disparando en el pie.
Debería señalar que a menos que ya tenga un StringBuilder, el concat de cadena recta sería más rápido. p.ej. cadena s = "orig" + SettingNode + KeyAttribute + setting.Name; – hemp
@Hemp: solo ligeramente. Se deshace de la llamada a Anexar. Todo lo demás debería ser igual. Y eso suponiendo que no haya otros añadidos. –
@Hemp: ¿Qué pasa con string s = string.Concat ("orig", SettingNode, KeyAttribute, setting.Name), creo que sería más rápido que usar "+" para concat. –