5

par最初は、すべてのコレクションクラスが、コレクションを適切な並列データ構造に変換する追加のメソッドを受け取ると想定しました( mapScala 2.8の要素タイプに最適なコレクションを返すなど)。

現在、一部のコレクションクラスはparメソッド(例:配列)をサポートしているようですがtoParSeq、他のコレクションクラスはtoParIterableメソッド(例:リスト)を持っているようです。Arrayはあまり使用されないか、推奨されないため、これは少し奇妙です。

その理由は何ですか?par「正しいこと」を行うすべてのコレクションクラスで利用できるようにしたほうがよいのではないでしょうか。

並行して処理される可能性のあるデータがある場合、どのタイプを使用する必要がありますか?実装の特徴scala.collectionまたはタイプを直接?

それともArrays、並列化する方が安いように見えるので、今すぐ優先する必要がありますか?

4

1 に答える 1

5

リストは並列処理にはあまり適していません。その理由は、リストの最後に到達するには、すべての要素をウォークスルーする必要があるためです。したがって、リストをイテレータとして扱うだけでよく、したがって、のようなより一般的なものを使用することもできますtoParIterable

インデックスが高速なコレクションは、並列処理に適しています。これには、実装するものすべてLinearSeqOptimizedに加えて、ツリーとハッシュテーブルが含まれます。 Arrayあなたが得ることができるのと同じくらい速いインデックスを持っているので、それはかなり自然な選択です。ArrayBuffer(をpar返すメソッドがある)のようなものを使用することもできますParArray

于 2010-12-19T00:29:03.233 に答える