java performance lambda java-8 inner-classes

java - ¿Desempeño Lambda vs clase interna anónima: reducir la carga en el ClassLoader?



performance java-8 (2)

Oracle tiene una presentación que cubre algunas de las diferencias de rendimiento. Parece que hay bastantes factores que afectan el rendimiento de las clases lambdas y anónimas.

http://www.oracle.com/technetwork/java/jvmls2013kuksen-2014088.pdf

Me gustaría saber qué tan grande es un beneficio que las lambdas tienen en Java 8. Estoy de acuerdo en que puede ser más fácil de leer a veces para usar lambdas, pero ¿tiene realmente un gran impacto en el lado del rendimiento? ¿O se centra principalmente en el azúcar sintáctico? Prefiero clases internas anónimas a veces; ¿Realmente pierdo muchos beneficios cuando no uso lambda todo el tiempo?

¿El único? ¿Grande? La ganancia de rendimiento, me parece, es que en realidad no creamos clases que el cargador de clases tenga que cargar al inicio del programa, por ejemplo, crear muchos subprocesos:

Thread t = new Thread(new Runnable() { public..... });

crea clases como Sample$1.class .

Aparte de eso, ¿hay algún rendimiento u otra ganancia oculta además de la legibilidad o mantenimiento, etc. del código? ¿Oculto en algún lugar de JVM? He visto preguntas similares a esto, pero la mayoría se centraron en el lado visual; No estoy interesado en eso. La pregunta es por curiosidad después de ver Java 8 Lambdas Hacking con Venkat Subramaniam.


Después de leer el PDF vinculado desde @Brett Okken, creo que se cumple lo siguiente:

  • Las clases internas tienen un rendimiento un poco más lento en el primer uso, pero parece negligente.
  • Los lambdas tienen un rendimiento más lento cuando se los llama a menudo debido a que acumulan más cuando se les llama.

Me quedaré con lo siguiente:

  • Utilice Lambdas para legibilidad cuando una pérdida de rendimiento de unos pocos milisegundos no es un problema (cosas de GUI, etc.)
  • Utilice las clases internas para las funciones críticas de rendimiento a menudo llamadas.