EPFLの並列プログラミングコースでは、データ並列性のための4つの抽象概念、すなわちIterator
,Builder
,Combiner
およびSplitter
が挙げられます。Builder、Combiner、およびSplitterとは何ですか?
私はIterator
に精通していますが、他の3つは一度も使用していません。私はBuilder
、Combiner
、およびSplitter
をscala.collection
パッケージの下で見ました。しかし、私は現実世界の開発、特にList
、Array
、ParArray
などのような他のコレクションとのコラボレーションでそれらを使用する方法を考えています。誰でも私にいくつかの指針と例を教えてください。
ありがとうございます!
残念ながら、私は現実の世界ではあまり使われていないと思います。並列コレクションライブラリは非常に厄介な位置にあります。本当に大規模なデータセットの場合、Sparkなどの分散処理フレームワークを使用して複数のマシン間でそれらを処理します。シングルマシンの場合、異なるスレッド/コア間の同期のオーバーヘッドを克服するのに十分なデータセットが必要です([この記事](https://www.jayway.com/2011/10/02/experimenting-with-scala -parallel-collections /))。そのような特殊なケースでは、ストリーミングアプローチを使用する方がメモリ使用量の面ではるかに優れています。 –
ライブラリ内のすべてのコンポーネントが使用されているとはかぎりません。一部の(実際にはほとんどの)コンポーネントは、決して相互作用しないと考えられています。 –