Fop*_*tin 8 parallel-processing haskell
我从haskell并行性开始,我已经成功地学会了如何使用一些策略:r0, rseq, rdeepseq, parList, parMap.现在我正在寻求更高的效率.所以这是我的问题:parList和之间有什么区别parBuffer?在哪些情况下,每个策略都有效?
该论文提到了这两个组合器(链接在这里).
parList并行评估所有项目,立即将它们全部设置.我建议当你想要一次使用整个列表时这很有用,例如在map-fold问题中.如果你想评估一堆数字然后求它们,parList用于评估,然后执行总和.
parBuffer评估前n个元素,当你消耗超过它时,它会引发下一个n,依此类推.因此parBuffer,当您要从块开始使用列表时,或者当列表非常大(或无限)时,您将不会对它进行全面评估.例如,如果您想从一些昂贵的计算项目列表中找到前10个答案,您可以使用take 10 . filter fwith parBuffer来并行评估列表中的连续块,直到找到您要查找的前十个项目为止对于.
| 归档时间: |
|
| 查看次数: |
1004 次 |
| 最近记录: |