java引用和lambda_Lambda和方法引用超过类中的普通Java方法

在正常的Java方法中,有没有使用LAMBDAS或方法引用的性能方面或其他优点?构建对象或调用方法的成本

我想知道传统和Java 8更新之间的区别。

Java LAMBDAS的可能副本比匿名类慢20倍

方法引用比lambda有实际的优势。

查看stackoverflow.com/questions/1784664/…

lambda与匿名内部类性能的可能重复:减少类加载器上的负载?

我可以假设这个问题是关于EDCOX1,4,对EDCOX1,5的Java编程。

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

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

Lambda      vs    Anonymous Class

linkage           class loading

capture           instantiation

invocation        invocation

总体基准测试表明,lambda在"热"基准测试中速度更快,在"冷"基准测试中速度更快。

对于复杂的方法和集合处理,没有像X这样的总体性能基准比Y更快。

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

但是,以与功能风格并行的方式处理集合要容易得多。流被懒散地执行,这有什么好处。

Java支持函数编程、流和lambDas是非常好的特性,但它们不是银弹。明智地使用它们。

lambda和匿名类,不是都有互惠互利的关系吗?

@普通人,他们是程序员的概念关系,但他们被不同的对待,但编译器。

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

为什么我们需要消费者或供应商等,而不是用常规的传统方法编写逻辑

@shyamsanju可以解释一下你的问题。

我们可以用任何Java 8更新的API替换传统方法吗?

使用Java 8 API优于传统Java方法有很多优点。

Java 8主要关注功能风格(更多声明性、少命令性)的方法,现在Java 8可以以优雅、流畅、功能性的方式编写程序,具有更高阶的功能。这会导致代码简洁它的错误更少,更容易理解、维护和并行化。

顶部:

有利于不变性

减少副作用

表达式优先于语句

怠速执行

还有很多要补充的,我刚刚给了我2块钱。

你可以在谷歌上搜索到几篇文章,但它们似乎都表明lambda的性能不如循环和匿名类。我不知道Java 9或Java 10是否改进了LAMBDAS的性能,但是我找不到任何似乎暗示他们做的事情。

我认为朗姆达的主要优点是阅读能力。也就是说,我看到一些lambda代码根本不可读,所以我猜这就像大多数情况下你可以滥用它。

我们需要普通的Java方法的消费者或供应商吗?

要使用lambda,不能。例如,我可以使用toString()对String的列表执行myList.stream().map(item -> item.toString).collect(Collectors.toList()) to convertmylist。但是如果你是在写自己的lambda,我相信你必须使用Consumer或者它的一个变体(就像是一个二元消费者和一些其他的???)我对后者没有太多了解,所以我不能百分之百确定。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值