Por lo tanto, soy principalmente un desarrollador C# y Java, pero supongo que esta pregunta podría pertenecer a cualquier lenguaje de programación que use StringBuilder o alguna derivada de los mismos.Uso de múltiples constructores de cadenas para una cadena
Está bien, así que es más o menos común saber que concatenar incluso un pequeño número de cadenas puede ser una gran causa de muerte (aunque incluso eso es discutible). Mi pregunta es si alguien tiene conocimiento de los efectos de rendimiento de usar un generador de cadenas dentro de un generador de cadenas. Para aclarar lo que quiero decir con eso, permítanme incluir algún código ficticio que debería ayudar a ilustrar mi punto.
También me doy cuenta de que, naturalmente, hay un golpe de rendimiento llamando a varias instancias de StringBuilder, pero no creo que lo llamaría lo suficiente como para causar problemas de rendimiento real. (Este supuesto también puede estar equivocado opiniones sobre ese sería útil también)
public string StringToGet()
{
StringBuilder sb = new StringBuilder("Some Text to add");
sb.append("more text to add");
sb.append("more text to add");
sb.append("more text to add");
sb.append("more text to add");
sb.append("more text to add");
sb.append("more text to add");
sb.append("more text to add");
sb.append(MethodThatCreatesAnotherString());
sb.append("more text to add");
sb.append("more text to add");
sb.append("more text to add");
sb.append("more text to add");
sb.append("more text to add");
sb.append("more text to add");
sb.append("more text to add");
sb.append(MethodThatCreatesAnotherString());
sb.append("more text to add");
sb.append("more text to add");
sb.append("more text to add");
sb.append("more text to add");
sb.append("more text to add");
sb.append("more text to add");
sb.append("more text to add");
sb.append(MethodThatCreatesAnotherString());
//etc
return sb.toString();
}
private string MethodThatCreatesAnotherString()
{
StringBuilder sb = new StringBuilder("Other text");
sb.append("more text to add");
sb.append("more text to add");
sb.append("more text to add");
sb.append("more text to add");
sb.append("more text to add");
sb.append("more text to add");
sb.append("more text to add");
return sb.ToString();
}
La lógica me dice que esto no debería ser un problema, pero algo acerca de este enfoque no parece que mirar bien para mí . ¿Alguien puede arrojar algo de luz sobre las siguientes preguntas
- ¿Crea esto un significativamente mayor impacto en el rendimiento que simplemente no usando métodos adicionales y el uso de una sola StringBuilder
- Es la práctica razonablemente aceptable.
Cualquier sitio en esto sería muy apreciado.
Esta pregunta merece más crédito de lo que está recibiendo. Definitivamente hay aplicaciones para este tipo de algoritmo. – Panzercrisis