miércoles, 12 de marzo de 2014

String, StringBuffer, StringBuilder

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