Repaを使用して大量のデータサンプルを処理するプログラムを作成しました。パフォーマンスはこのプログラムにとって重要です。操作の大部分は、多次元配列上の平行なマップ/フォールドを必要とし、Repa
はこれに最適です。しかし、私のプログラムではまだ1次元配列しか使用せず、並列性を必要としません(並列性のオーバーヘッドはパフォーマンスに悪影響を及ぼします)。これらの操作の中には、Repa
がサポートしていないカスタムアキュムレータ付きのtake
またはfold
のような機能が必要です。だから私はRepa
配列を反復処理することで、これらの操作を自分で書いています。DIM1 Repa ArrayとVectorのパフォーマンス
Repa
の代わりにVectorを使用してこれらの操作を書き直す方がよいでしょうか?彼らはより良いパフォーマンスをもたらすだろうか?
私は一次元のRepa
アレイがVector
のように実装されていると読んだので、より良いパフォーマンスが得られることは間違いありません。一方、Vector
には、自分で書くのではなく、使うことができる便利な組み込み関数があります。
Repaは、「DIM1」だけでなく、フード内のすべてのディメンションに箱なし( 'U')または格納可能(' F')ベクターを使用します。ですから、もしあなたがそれらの 'DIM1'配列を並列に処理する必要がなければ、' vector'パッケージを直接使うのが良いでしょう。 –
はい、そうです。すべてのN次元配列は、フードの下のベクトルです。その唯一の形が変わります。 –