首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >项目开发所需的Lambda

项目开发所需的Lambda
EN

Stack Overflow用户
提问于 2017-04-12 01:44:08
回答 2查看 64关注 0票数 0

我做了一些PoCs来比较两种实现交互列表的性能。

第一种方法是使用纯java,使用foreach并使用“if”每个元素进行检查。

第二种方法是像这样使用lambda

代码语言:javascript
复制
int max1 =  lists1.stream()
                  .mapToInt(i -> i)
                  .max()
                  .getAsInt();

long finalCount = lists1.stream()
                        .filter(p -> p.intValue() == max1)
                        .count();

显然,使用lambda比使用经典的java foreach快5倍。

我非常有信心在我的团队中强制像规则一样在我的团队中使用lambda,禁止使用经典的java foreach

我的问题是,如果存在一些我不能应用此规则(lambda必需的)的场景,我的意思是,如果存在异常,我不能使用lambda处理集合。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-04-12 03:05:01

绝对的第一件事-基准测试Java代码是复杂。意思:除非你已经遵循了之前的链接中概述的规则,否则你的测量数据被伪造的几率很高。

除此之外,lambdas确实使用了发票动态字节码指令,这反过来可以提高性能。

但这绝不支持为整个团队强制执行这样的政策。

真正的答案是:让你的团队了解溪流和兰巴达的利弊。使他们能够作出一个明智的决定,何时和如何利用这些概念。确保人们理解他们在做什么,而不是给他们一个清单,命令他们遵循。

票数 2
EN

Stack Overflow用户

发布于 2017-04-12 01:51:41

Lambda+streams明显更快?事实并非如此。

这在很大程度上取决于情况,但总的来说,Java 7循环比流更快,因为运行的次数较少。

回答您的问题:“不”;您不应该强制要求始终使用lambda,因为:

  • 这是一种风格的东西,两种形式都是可以接受的
  • 有些循环在实现为流时会变成火车残骸。
  • 你的理由毫无根据
  • 可读性几乎总是胜过“性能”。

对于并行流,处理可以更快,但只有当流足够大以证明管理流的开销是合理的。经验法则是,如果您至少有1000个元素要处理,请尝试一个流。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43358852

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档