我刚开始学习Scala,所以请耐心:-)
我对reduceLeft的行为有疑问。这里是一个例子:
List(1, 2, 3, 4, 5) reduceLeft (_ + _)
我想知道是否可以同时进行计算,例如:
第一回合:
第二轮:
第三轮:
如果我只使用reduce函数而不是reduceLeft,那至少是我期望的。还是reduceLeft真的只一次减少一个?
((((1 + 2) + 3) + 4) + 5)
这基本上意味着它不能并行执行,如果可能的话,应该始终首选reduce而不是reduceLeft/Right?
最佳答案
答案是肯定的,而且非常简单:
List(1, 2, 3, 4, 5).par.reduce (_ + _)
par
方法将列表转换为并行集合。当您在此并行集合上调用reduce
时,它将并行执行。参见the parallel collection documentation
关于scala - 可以并行执行reduceLeft吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15282884/