编程语言
首页 > 编程语言> > 就Java流的性能而言,有什么更好的方法:合并过滤器或合并环境?

就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