martes, mayo 08, 2007

Rendimiento y el uso de String

 
 

Sent to you by JEdgar via Google Reader:

 
 

Rendimiento y el uso de String

via Noticias javaHispano.org by jmarranz@noresponder-noreplay.com on Mar 02, 2007

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.



 
 

Things you can do from here:

 
 





<< Home

This page is powered by Blogger. Isn't yours?