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:
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:
y este otro:
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.
String texto = "Hola";
texto = texto + " y adios";
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 + "*";
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();
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.
Comentarios
Publicar un comentario