配列内の要素に対して多くの演算を実行するときにパフォーマンスを最適化するために、C# で 2D 配列を格納する最良の方法はどれですか?
大規模な (約 1.5G) 配列があり、たとえば、要素ごとに互いに乗算したいと考えています。パフォーマンスは重要です。これが行われるコンテキストは c# にあります。配列を保存して反復処理するスマートな方法はありますか? これらの部分をアンマネージ C++ で書くことはできますか?これによって本当にパフォーマンスが向上しますか? 配列は、C# プログラムの残りの部分からアクセスできる必要があります。
現在 (c では)、配列は単一の長いベクトルとして格納されます。配列内の各要素に対して計算を実行し、古い値を上書きします。計算は通常、ベクトル内の各要素に対して一意です。
タイミング実験では、データを C# の配列として格納して反復処理すると、2D 配列として格納するよりも時間がかかることが示されています。データを処理するためのさらに良い方法があれば知りたいです。実行される特定の算術は、質問には関係ありません。