Buscar
Social
Ofertas laborales ES
« Tweets más populares del último mes | Main | 9 Mentiras que los programadores a menudo nos contamos a nosotros mismos »
miércoles
abr022014

Synchronized es 5 veces más lento en Java 8 que en Java 7

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

PrintView Printer Friendly Version

EmailEmail Article to Friend

Reader Comments (1)

El comentario de Aleksey Shipilev:March 31, 2014 at 10:26 AM en ese blog, así como la respuesta del autor, pueden explicar algunas cosas.

abril 2, 2014 | Registered Commenterchoces

PostPost a New Comment

Enter your information below to add a new comment.

My response is on my own website »
Author Email (optional):
Author URL (optional):
Post:
 
Some HTML allowed: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>