viernes, 6 de junio de 2008

Mitos sobre rendimiento y escalabilidad


Una recopilación de buenos enlaces, ellos sí que saben. Y en la PPT va probablemente una de las mejores frases que he leído en meses: "clever code confuses clever JVMs". o lo que es lo mismo "no te pases de listo" :-)

Tengo que reconocer que alguno de los puntos de la PPT me ha sorprendido, como que actualmente la sincronización en sí misma no es excesivamente costosa, sino que lo que sigue siendo costoso es la contención de threads. En otras palabras: en teoría "casi" es lo mismo usar un StringBuilder en lugar de StringBuffer cuando sólo un thread simultáneamente pasa por las regiones de exclusión mutua (lo que choca con lo que dije precisamente en uno de los primeros posts). ¿Es una gran equivocación o es que me estoy volviendo viejo y sigo tomando como ciertas cosas que eran verdad en la época del JDK 1.1, 1.2 y hasta 1.3 pero ya no lo son??? Si fuera verdad... ¿para qué crear la nueva StringBuilder? Ummm... Habrá que hacer pruebas de rendimiento (lo cierto es que en muchos aspectos casi todo el mundo habla de oídas)... [Actualización 1/9/2008: puede verse información detallada acerca de benhmarking comparativo aplicando distintas opciones de lanzamiento de la JVM sobre esta y otras opciones de optimizaciones sobre el modelo de Threading en el post ¿Funcionan las optimizaciones sobre el modelo de threading?]

Y por cierto, como me han recordado hoy, rendimiento no es sinónimo de escalabilidad. Hay que tener claros los conceptos y los objetivos en cada caso. En muchos casos los pasos para conseguir ambos objetivos son los mismos pero muchas otras veces son términos casi incompatibles. La cuestión es saber cuál es el término medio como siempre... Y hablando de mitos y leyendas...

No hay comentarios: