我只是想測試並行收集了一下,我用下面的代碼行(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