Synchronized es 5 veces más lento en Java 8 que en Java 7
miércoles, abril 2, 2014 at 7:20AM
Abraham

Parece que el rendimiento de Java 8 en algunos aspectos está siendo una de cal y una de arena. Hace un par de días os traíamos una noticia diciendo que según un benchmark el rendimiento de Fork-Join en Java 8 era mejor que en Java 7. Hoy os traemos otra no tan positiva.

Según este benchmark, el uso de synchronized es 5 veces más lento en Java 8 que en Java 7. En este blog han hecho diversas pruebas de varias primitivas empleadas para sincronización, y el uso de la palabra reservada synchronized no ha salido bien parado. Este gráfico muestra el tiempo en milisegundos de tres primitivas diferentes de sincronización en Java 7, mostrando en amarillo el uso de synchronized:

Éste es el mismo benchmark ejecutado en Java 8:

Como podéis ver, synchronized tarda casi cinco veces más en ejecutarse, si bien el uso de Atomic y locks parece ser prácticamente el mismo. Un factor de cinco es una reducción de rendimiento bastante importante; quizás esto se deba a un fallo por parte de Oracle y en una Update cercana corrijan esta regresión de código. Porque si no es una regresión, no me explico que lo puede haber causado.

endimiento de Fork-Join en Java 8
Article originally appeared on javaHispano (http://www.javahispano.org/).
See website for complete article licensing information.