2010-07-09 14 views
7

¿Desde un punto de vista de los recursos es razonable usar un StringBuilder para concaturar dos cadenas o hay una operación mínima de concatenación que hace que StringBuilder sea eficiente?Concatenación con StringBuilder

Respuesta

11
+1

Esta respuesta realmente merece más votos positivos, en la práctica, este es exactamente el consejo a seguir: StringBuilder en bucles, métodos de concatenación de clase String para un número fijo de cadenas. –

+0

De hecho, debería ser la respuesta aceptada. Lo siento, ayer estaba un poco intimidado y acepté ayunar. –

+0

@Heinz: debería poder cambiar la respuesta aceptada si lo desea. – Joren

6

Concatenar dos cadenas con StringBuilder no le dará ningún beneficio, ya que el resultado todavía tiene que convertirse en una cadena, por lo que concatenarlas directamente es una asignación + dos copias. StringBuilder no puede hacer nada mejor, solo desordenar su código.

6

Si usted está haciendo la pregunta, es probable que tomar una decisión sobre qué técnica utilizar con el fin de obtener un buen rendimiento.

Si está intentando obtener un buen rendimiento, probablemente tenga un conjunto de pruebas de rendimiento cuidadosamente diseñadas que muestren claramente las diferencias entre dos técnicas diferentes, medidas a lo largo de un conjunto de escenarios de rendimiento realistas centrados en el usuario.

Si tiene una suite de este tipo, ¿por qué nos pregunta? ¡Simplemente ejecute las dos formas y vea cuál le ofrece un mejor rendimiento!

Si no tiene una suite de este tipo, , nunca obtendrá un buen rendimiento de una aplicación lenta haciendo preguntas a personas al azar en Internet que no conocen a sus clientes, su código o sus escenarios . Cree usted mismo un conjunto de pruebas de rendimiento cuidadosamente diseñadas que le permita medir la diferencia entre dos técnicas y compararlas con un conjunto realista de objetivos de rendimiento centrados en el usuario.

+1

En primer lugar, es su curiosidad. Tampoco necesito un conjunto de pruebas de rendimiento cuidadosamente diseñadas, porque mis proyectos son realmente pequeños y tampoco tengo un problema que deba optimizar mis programas en un área tan baja como es la concatenación de dos cadenas. Pero muchas personas hablan sobre el uso de StringBuilder y esto me hizo curioso si hay una cantidad mínima en el punto de equilibrio. También existen preguntas sin gran importancia, pero si hay una plataforma para preguntar, ¿por qué no preguntar? Y si está por debajo de tu nivel, ignora la pregunta. –

+0

Lo siento Eric, tenía que votar abajo aquí: su respuesta parecía un poco grosera y definitivamente no fue útil. Sorprendente viniendo de un desarrollador sénior en el equipo compilador de C# (¡un producto por el que tengo muchísimo respeto)! –

+0

Stephen, ¿qué tiene de grosero la respuesta de Eric? OMI, su respuesta es genial. Si no tiene problemas de rendimiento, no se preocupe por StringBuilder, preocúpese de escribir un código legible que resuelva su problema comercial. Si tiene un problema de rendimiento, primero DEBE crear un perfil del código y luego trabajar en los puntos críticos identificados por el generador de perfiles. Simplemente no hay otra manera. – SolutionYogi

Cuestiones relacionadas