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:
- Visit the original item on Noticias javaHispano.org
- Subscribe to Noticias javaHispano.org using Google Reader
- Get started using Google Reader to easily keep up with all all your favorite sites