Rendimiento de Groovy 2.0 vs Java
Hace un par de meses anunciábamos la disponibilidad de Groovy 2.0. La principal novedad de esta versión probablemente sea el tipado estático opcional para poder realizar verificaciones adicionales en tiempo de compilación y para incrementar el rendimiento. También usa la funcionalidad de Invoke Dynamic de Java 7 así como los cambios en la sintaxis del Project Coin para seguir consiguiendo una integración lo más sencilla posible entre Groovy y Java.
Oliver Plohmann ha decidido ejecutar un pequeño micro benchmark consistente en generar números de la serie de Fibonacci; ha implementado el mismo código en Java, en Groovy 2.0 con y sin la anotación @CompileStatic y ha hecho varias versiones del programa Groovy; las dos primeras ( "static ternary" y "static if") abusan del uso de funciones estáticas y los resultados obtenidos con ellas no son relevantes para la mayor parte de el código. Estos son los resultados:
Según estas conclusiones, Groovy 2.0 es entre 3 y 5 veces más lento que Java al no usar @CompileStatic, y entre 2 y 3 veces más lento al usarla.
¿Habéis notado vosotros mejoras de rendimiento en Groovy 2.0?
Reader Comments (1)
Con @CompileStatic, no es entre 2 y 3 veces más lento. Con el caso peor no llega al doble de lento. De todas formas, el benchmark no me parece muy fiable, solo se ha realizado calculando series de fibonacci, estaría bien que añadiera otros algoritmos para tener una visión más completa de su comportamiento en distintas circunstancias.