Diferencias entre String, StringBuffer y StringBuilder
String
Al concatenar con el operador "+", es la forma mas básica para unir 2 cadenas de caracteres pero es la peor manera en cuanto a rendimiento.Ejemplo:
String hola = "Hola, ";
String nombre = "ssnova";
String holamundo = hola + nombre;
StringBuffer
Permite una concatenacion de caracteres mutable, es decir nos ayuda a concatenar de manera rápida, simple y eficiente.Nota: Los métodos son sincronizados, por lo que se puede usar de manera segura en ambientes multihilos.
StringBuffer holamundoBuffer = new StringBuffer();
holamundoBuffer.append("Hola, ");
holamundoBuffer.append("ssnova24");
String holamundo = holamundoBuffer.toString();
StringBuilder
Concebido recien desde el JDK 1.5, y es la clase mas eficiente para la concatenación de caracteres.Nota: Sus métodos son NO SINCRONIZADOS, por lo que tiene un mejor rendimiento que StringBuffer, para usar el StringBuilder no es complicado ya que tiene la misma declaración y manera de uso que el String Buffer.
StringBuilder holamundoBuilder = new StringBuilder();
holamundoBuilder.append("Hola, ");
holamundoBuilder.append("ssnova24");
String holamundo = holamundoBuilder.toString();
Midiendo el Rendimiento StringBuffer y StringBuilder
StringBuffer sbuffer = new StringBuffer();
inicio = System.currentTimeMillis();
for (int i=0; i<1000000; i++) {
sbuffer.append("zim");
}
fin = System.currentTimeMillis();
System.out.println("Tiempo del StringBuffer: " + (fin-inicio));
StringBuilder sbuilder = new StringBuilder();
inicio = System.currentTimeMillis();
for (int i=0; i<1000000; i++) {
sbuilder.append("zim");
}
fin = System.currentTimeMillis();
System.out.println("Tiempo del StringBuilder: " + (fin-inicio));
StringBuffer: 93 milisegundos en concatenar un millon de String.
StringBuilder: 47 milisegundos para concatenar un millon de String.
Nota Final: La misma operacion se realizo con el operador suma, y hay que limpiar continuamente el Heap, y solamente para concatenar 100000 string con el operador "+", se demora 99812 milisegundos.
No hay comentarios:
Publicar un comentario