domingo, 22 de marzo de 2009

Optimizar el uso de String (I)

Puede que una de las caracteriasticas más importantes sobre los String en Java, en cuanto a la optimización, es que son inmutables, es decir, nunca cambian tras su creación. Por ejemplo, si tenemos el siguiente código:

String texto = "Hola";
texto = texto + " y adios";

Al ejecutarse la segunda línea, habrán dos instancias de String en memoria: "Hola" y "Hola y adios". Si estamos implementando un método que realiza varias operaciones como esta, este hecho puede hacer que sea bastante ineficiente. Para solucionarlo, podríamos usar la clase StringBuffer. Por ejemplo, la diferencia en tiempo entre ejecutar este código:

String texto1 = "";
for (int i = 1; i <= 10000; i++)
   texto1 = texto1 + "*";

y este otro:

StringBuffer sb = new StringBuffer();
for (int i = 1; i <= 10000; i++)
   sb.append("*");
String texto2 = sb.toString();

es de 40 a 1, por lo que podemos comprobar que StringBuffer puede resultar una opción interesante cuando vamos a realizar tareas de este tipo.

No hay comentarios:

Publicar un comentario