我只是想测试并行收集了一下,我用下面的代码行(REPL):为什么使用并行集合不会更快?
(1 to 100000).par.filter(BigInt(_).isProbablePrime(100))
反对:
(1 to 100000).filter(BigInt(_).isProbablePrime(100))
但是水货版本是不是更快。事实上,它甚至感觉有点慢(但我没有真正测量过)。
有没有人对于解释?
编辑1:是的,我有一个多核处理器
编辑2:OK,我“解决”自己的问题。 isProbablePrime
的实现似乎是问题,而不是平行集合。我用另一个函数替换isProbablePrime
来测试素数,现在我得到了预期的加速比。
并行只有更快,如果它让你获得更多的硬件起动,并且它也有开销。 Scala的设置是为了利用额外的内核? – 2011-05-26 21:18:46
我不知道我必须设置任何东西。你有关于此的更多信息吗? – 2011-05-26 21:27:08
这里没有配置需要; Scala查找可用的内核数量,并将工作委托给适当大小的Fork-Join池。 – 2011-05-26 23:41:42