Buscar
Social
Ofertas laborales ES
« Herramienta gratuita para gestión de empresas de servicios | Main | Liberado Tomcat 6 »
viernes
mar022007

Rendimiento y el uso de String

No es un tema nuevo en absoluto, pero no está mal recordarlo.

Seguramente todos usamos extensivamente el operador + o += con objetos String, no haya nada malo en ello salvo que sean usadas en bucles repetidas veces. En esas ocasiones el uso de StringBuffer es menos bonito pero con mucho mayor rendimiento.



Haced la prueba comparando el tiempo de ejecución entre:





long start = System.currentTimeMillis();

String str = "";

for(int i = 0; i < 10000; i++)

str += i;

System.out.println(System.currentTimeMillis() - start);



start = System.currentTimeMillis();

StringBuffer strb = new StringBuffer();

for(int i = 0; i < 10000; i++)

strb.append( i );

System.out.println(System.currentTimeMillis() - start);







La segunda opción es *miles* de veces más rápida.



La razón es porque el + y el += suponen la creación de al menos un objeto StringBuffer y la conversión de éste en un nuevo objeto String resultante de la expresión, es decir dos objetos como mínimo por iteración que además son mandados inmediatamente al garbage collector por no hablar de la perdida del objeto String previamente asignado al asignar el resultado de la expresión.





Reader Comments

There are no comments for this journal entry. To create a new comment, use the form below.
Comentarios deshabilitados
Comentarios deshabilitados en esta noticia.