Recientemente he estado revisando
los apuntes y algunos libros de programación para retomar mi trabajo en Java.
Una de las primeras anotaciones importantes que encontré en dicha información
es la que resalta el uso de las clases StringBuffer y StringBuilder.
Supongamos que se tiene la
siguiente clase, cuyo único propósito es concatenar un conjunto de 100000
caracteres en un único objeto String:
Como se puede apreciar, la
concatenación se realiza con el operador +. Luego de ejecutar dicho programa,
se puede verificar que el tiempo de ejecución del mismo el de alrededor de 9000
ms (existía en algunos casos cierta variabilidad de unos 200 a 300 ms que no
comprendo aún porque ocurre). Tal y como en mis libros ponía, decidí verificar
el rendimiento del mismo programa pero usando las clases mencionadas en el
título de esta entrada. Las versiones fueron las siguientes:
Los resultados obtenidos fueron
una descomunal diferencia de tiempo entre el concatenar por medio del operador
+ y el uso de las clases StringBuilder y StringBuffer. Ya que en algunas veces
existía diferencia entre las ejecuciones, decidí ejecutar cada programa en 5
ocasiones y después resumir los resultados en una tabla, la cual muestro a
continuación:
Como es evidente, el uso del
operador + aumenta dramáticamente la ejecución de una clase sencilla como la
que se ha tomado de ejemplo. Las clases StringBuffer y StringBuilder son la
forma más adecuada de realizar una concatenación, sobre todo en proyectos donde
el trabajo con caracteres sea fundamental. De momento, el pecado de concatenar
con + solo debería ser ‘permisible’ en una que otra línea de código… como para
imprimir un resultado en un out.println… ¿o no?
Para una próxima entrada,
diferenciaremos entre StringBuffer y StringBuilder.
No hay comentarios:
Publicar un comentario