就Java流的性能而言,有什么更好的方法:合并过滤器或合并环境?
作者:互联网
这个问题已经在这里有了答案: > Java 8 Streams: multiple filters vs. complex condition 4个
需要过滤适合其字段的某些情况的所有对象.
假设对象具有多个字段:
class Price {
int first;
int second;
String third;
}
和价格流:
Stream<Price> streamPrices;
最佳选择是什么:
1.
streamPrices
.parallel()
.filter(p0->p0.first> 10)
.filter(p1->p1.second <30)
.filter(p2-> p2.third.length() > 8);
2.
streamPrices
.parallel()
.filter(p-> (p.first > 10)
&& (p->p.second <30)
&& (p-> p.third.length() > 8)
);
我使用了JMH框架,但没有得出明确的结论.
解决方法:
不必担心性能,毕竟过早的优化是万恶之源.通常,它与易读且易于维护的精心设计的代码相比,其重要性要小得多.
衡量效果非常棘手,尤其是在流媒体方面.例如,对于较小的列表,您可能会发现并行比顺序慢,因为线程的开销超过了收益.您还会发现流通常比传统的迭代器效率低,因为流是语法糖,编译器将其转化为对象和方法调用.
话虽这么说,差异是如此之小,以至于不值得再三考虑.
标签:java-stream,parallel-processing,java 来源: https://codeday.me/bug/20191109/2011296.html