为了账号安全,请及时绑定邮箱和手机立即绑定

类中普通 Java 方法的 Lambda 和方法引用

类中普通 Java 方法的 Lambda 和方法引用

江户川乱折腾 2022-05-25 16:06:46
使用 lambdas 或方法引用而不是普通的 java 方法是否有任何性能方面或其他优点?构造对象或调用方法的成本如何我想知道传统和 Java 8 更新之间的区别
查看完整描述

3 回答

?
慕桂英546537

TA贡献1848条经验 获得超10个赞

Java 引入了字节码指令invokedynamic来构造匿名类,然后generate byte codelambdas因此,如果是 lambdas,java 会生成实现类并在运行时生成字节码。一旦字节码生成,其余步骤与普通方法调用相同。因此,在 lambda/method ref 的情况下,only overhead is constructing an anonymous class and generate its byte at runtime. 所以 lambdas 比普通的方法调用要慢一些。



查看完整回答
反对 回复 2022-05-25
?
www说

TA贡献1775条经验 获得超8个赞

我可能认为这个问题是关于Imperative与DeclarativeJava 编程的。


因为 lambda/方法引用只能与匿名类性能进行比较。


他们在执行前采取不同的步骤:


Lambda      vs    Anonymous Class

linkage           class loading

capture           instantiation

invocation        invocation

总体基准测试表明,lambda 在“热”基准测试中要快一些,而在“冷”基准测试中要快得多。


关于复杂的方法和集合处理,没有X比Y.


您应该指定一个案例来比较性能基准,在某些情况下经典方法可以更快地工作,在某些情况下 - 功能。我可能会假设在大多数情况下经典方法会更快,尤其是在使用可变对象时。


但是使用功能样式以并行方式处理集合要容易得多。流是延迟执行的,这是一个优势。


Java 支持函数式编程、流和 lambda 是非常好的特性,但它们不是灵丹妙药。明智地使用它们。


查看完整回答
反对 回复 2022-05-25
?
陪伴而非守候

TA贡献1757条经验 获得超8个赞

与传统的 Java 方法相比,使用 Java 8 API 有很多优点。

Java 8 基本上专注于函数式风格(更多声明式,更少命令式)方法,现在我们可以使用 Java 8 以优雅流畅的函数式风格进行编程,并具有高阶函数。这可以导致代码简洁,错误更少,更易于理解、维护和并行化。

最重要的是:

  1. 支持不变性

  2. 减少副作用

  3. 更喜欢表达式而不是语句

  4. 懒惰执行

有很多要补充的,我只给了我的 2cents。


查看完整回答
反对 回复 2022-05-25
  • 3 回答
  • 0 关注
  • 144 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号