Lambdas and Method References Over Normal Java methods in a Class
在正常的Java方法中,有没有使用LAMBDAS或方法引用的性能方面或其他优点?构建对象或调用方法的成本
我想知道传统和Java 8更新之间的区别。
我可以假设这个问题是关于EDCOX1,4,对EDCOX1,5的Java编程。
因为lambda/方法引用只能与匿名类性能进行比较。
他们在执行之前采取了不同的步骤:
1 2 3 4 | Lambda vs Anonymous Class linkage class loading capture instantiation invocation invocation |
总体基准测试表明,lambda在"热"基准测试中速度更快,在"冷"基准测试中速度更快。
对于复杂的方法和集合处理,没有像
您应该指定一个案例来比较性能基准,在某些情况下,经典方法可以更快地工作,在某些情况下是功能性的。我可以假设,在大多数情况下,经典方法会更快地工作,尤其是在处理可变对象时。
但是,以与功能风格并行的方式处理集合要容易得多。流被懒散地执行,这有什么好处。
Java支持函数编程、流和lambDas是非常好的特性,但它们不是银弹。明智地使用它们。
Java引入字节码指令EDOCX1,0来构造匿名类,然后EDCOX1,1,EDCOX1,2。因此,如果lambdas Java生成了实现类并在运行时生成字节代码。一旦字节代码生成,步骤的其余部分与普通方法调用相同。因此,在lambda/方法引用
使用Java 8 API优于传统Java方法有很多优点。
Java 8主要关注功能风格(更多声明性、少命令性)的方法,现在Java 8可以以优雅、流畅、功能性的方式编写程序,具有更高阶的功能。这会导致代码简洁它的错误更少,更容易理解、维护和并行化。
顶部:
还有很多要补充的,我刚刚给了我2块钱。
你可以在谷歌上搜索到几篇文章,但它们似乎都表明lambda的性能不如循环和匿名类。我不知道Java 9或Java 10是否改进了LAMBDAS的性能,但是我找不到任何似乎暗示他们做的事情。
我认为朗姆达的主要优点是阅读能力。也就是说,我看到一些lambda代码根本不可读,所以我猜这就像大多数情况下你可以滥用它。