【发布时间】:2018-11-24 22:07:01
【问题描述】:
Joshua Bloch 在<Effective Java> (Third Edition) 中提到
Stream 的 collect 方法执行的操作(称为 mutable reductions)不适合并行化,因为组合集合的开销很高。
我阅读了Mutable reduction 上的文档,但我仍然不太确定为什么减少不是并行性的好候选者。是synchronization 吗?
正如@Ravindra Ranwala 指出的那样(我也在Reduction, concurrency, and ordering 文档上看到了这一点):
并行执行操作实际上可能会适得其反。这是因为对于某些 Map 实现而言,组合步骤(通过键将一个 Map 合并到另一个 Map)可能昂贵。
如果是这样,那么是否还有其他主要因素我们需要关注可能会导致性能低下?
【问题讨论】:
标签: java parallel-processing java-8 java-stream reduce