[Scala]Parallel Collections

2011年12月13日

2.9からParallel Collectionsが実装されてますが、よく分かりません。

`foreach`, `map`, `filter`などの処理をする時にマルチコア対応したコレクションという事ですかね。
[scala]import scala.collection.parallel.mutable._[/scala]
しておく必要がありそうです。


[scala]Array(1, 2, 3, 4, 5).par.sum
// または
ParArray(1, 2, 3, 4, 5).sum[/scala]
並列処理出来るコアの数を取得する
[scala]scala.collection.parallel.availableProcessors[/scala]
普通のArrayを並列Arrayに変換するには
[scala]Array(1, 2, 3, 4, 5).par[/scala]
逆に並列Arrayを普通のArrayに戻すには
[scala]ParArray(1, 2, 3, 4, 5).seq[/scala]
ArrayとListは、普通のから並列へ変換する時に時間がかかるので、もしかしたら
直接ParArrayとかParListとか作った方が早いのかも。
Range、Vector、Map、Setはオーバーヘッドが無いようだ。

Scala

Posted by GENDOSU