16 de febrero de 2008

Optimización de sistemas (III)

Tito HX me recordó en el post anterior (optimización de sistemas II) un punto importantísimo que se me había pasado: el compilador.

El compilador es el programa que transforma tu código en algo que pueda ejecutar la máquina, y puede hacer que funcione de dos maneras: que funcione sin más, o que funcione rápido. Por eso la elección de un compilador resulta de vital importancia. Como él apuntaba para el caso del lenguaje C, la elección del compilador de Intel podía mejorar muchísimo los tiempos de ejecución si tu proceso ya no tiene cuellos de botella.

Además, la mayoría de compiladores pueden ser invocados con distintos niveles de optimización. En general cuanto más optimizado quieras tu código, más tiempo durará la compilación, por lo que durante el desarrollo conviente tenerlo desactivado.

En el caso de Java, no solo importa lo rápido que sea el código compilado, sino cómo de rápido lo va a interpretar la máquina virtual. He estado buscando algún benchmark actualizado que comparara el rendimiento de las máquinas virtuales de Sun (la oficial), la de IBM y la de Bea (JRockit), pero no he encontrado nada más que este informe (se necesita registro para ver el gráfico). Otra cosa muy a tener en cuenta en este lenguaje es que la máquina virtual mejora en rendimiento muchísimo con cada versión, por lo que hay que intentar tenerla lo más actualizada posible.

Más en java, en el mundo J2EE, la elección del servidor de aplicaciones también es muy importante. Los dos servidores de aplicaciones con los que más he trabajado son JBoss y WebSphere, y la impresión que me han dado siempre es que el primero es mucho más rápido que el segundo. Estoy buscando algún benchmark sobre esto, pero tampoco encuentro nada (me da la impresión de que estoy muy torpe con los buscadores...)

No hay comentarios: