Tiendo a utilizar StringBuilder
en rutas de código donde el rendimiento es una preocupación. La repetida concatenación de cadenas dentro de un bucle suele ser un buen candidato.
La razón para preferir StringBuilder
es que tanto +
y concat
crear un nuevo objeto cada vez que usted los llama (siempre que el argumento lado derecho no está vacío). Esto puede sumar rápidamente muchos objetos, la mayoría de los cuales son completamente innecesarios.
Como han señalado otros, cuando usa +
varias veces dentro de la misma instrucción, el compilador a menudo puede optimizar esto para usted. Sin embargo, en mi experiencia, este argumento no se aplica cuando las concatenaciones ocurren en declaraciones separadas. Ciertamente no ayuda con los bucles.
Habiendo dicho todo esto, creo que la máxima prioridad debería ser escribir código claro. Hay algunas excelentes herramientas de creación de perfiles disponibles para Java (uso YourKit), lo que hace que sea muy fácil identificar los cuellos de botella de rendimiento y optimizar solo los bits en los que importa.
P.S. Nunca he necesitado usar concat
.
primera cosa que viene a la mente es que todos y cada vez que utilice una cadena sencilla, se puede asignar un objeto (proporcionar trabajo a GarbageCollector), mientras usa un StringBuilder o un StringBuffer lo mantiene trabajando con un solo objeto. – BigMike