Lambda vs匿名内部类性能:减少ClassLoader的负载?

我想知道lambdas在Java 8中有多大的好处。我同意有时使用lambdas可能更具可读性,但是它对性能方面有多大影响吗? 或者主要是作为语法糖? 我有时喜欢匿名的内部课程; 当我不经常使用lambda时,我真的会失去很多好处吗?

唯一的?大? 在我看来,性能提升是我们实际上并没有创建类加载器必须在程序开始时加载的类 – 例如创建许multithreading:

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

创建Sample$1.class等类。

除此之外, 除了代码的可读性或可维护性等之外还有任何性能或其他隐藏的收益吗? 隐藏在JVM的某个地方? 我见过类似的问题,但大多数都集中在视觉方面; 我对此不感兴趣。 在观看使用Venkat Subramaniam的Java 8 Lambdas Hacking之后,问题出于好奇。

Oracle的演示文稿涵盖了一些性能差异。 似乎有很多因素会影响lambdas与匿名类的表现。

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

阅读@Brett Okken链接的PDF后,我相信以下内容:

  • 内部类在首次使用时性能稍慢,但似乎可以忽略不计。
  • Lambdas经常被调用时性能较慢,因为它们在调用时会产生更大的堆栈。

我会坚持以下内容:

  • 当几毫秒的性能损失不是问题时(GUI内容等),使用Lambdas可读性
  • 将内部类用于经常调用的性能关键函数。