我知道在设置并行处理时存在开销,Stream
如果项目很少或每个项目的处理速度很快,单线程中的处理速度会更快。
但是,是否有类似的阈值trySplit()
,将问题分解成更小的块会适得其反?我通过类比来思考合并排序切换到最小块的插入排序。
如果是这样,阈值是否取决于在过程中的相对成本trySplit()
和消费项目tryAdvance()
?考虑一个比推进数组索引复杂得多的拆分操作——例如拆分一个按词法排序的多集排列。是否有约定让客户端在创建并行流时根据其使用者的复杂性指定拆分的下限?Spliterator
可以用来估计下限本身的启发式方法吗?
或者,让 a 的下限为Spliterator
1 并让工作窃取算法负责选择是否继续拆分是否总是安全的?