多次元C#配列を反復処理するための最速の方法を見つけようとしています。問題に焦点を当てるために、すべてのドメインコードを削除しました。現時点では、これは1.86秒で実行され、その間に約25,000,000回の反復を実行し、5000個の配列要素を処理します。私は2日間で1.86をできるだけ下げるという目標を設定しています:-)
現実の世界では、処理するのに50,000²のようになります。
PLINQを使用してみましたが、スレッドのオーバーヘッドによって実際には遅くなっているようです(3.48秒で発生します)。
安全でないC#が進むべき道かもしれないと思っていますが、その道を進む前に、パフォーマンスを改善する方法について何か考えていただければ幸いです。これまでに安全でないC#を実行したことがないので、パフォーマンスが向上するかどうかはわかりません。
Console.WriteLine("started");
var sw = System.Diagnostics.Stopwatch.StartNew();
long iterations = 0;
string[] data = new string[5000];
string[] data2 = new string[5000];
string[] data3 = new string[5000];
int ubound = data.GetUpperBound(0);
for (int i = 0; i <= ubound; i++)
{
string d1 = data[i];
string d2 = data2[i];
string d3 = data3[i];
for (int j = 0; j < ubound; j++)
{
string e1 = data[j];
string e2 = data2[j];
string e3 = data3[j];
Interlocked.Increment(ref iterations);
}
Interlocked.Increment(ref iterations);
}
Console.WriteLine("Finished {0} iterations in {1} seconds", iterations, sw.Elapsed.TotalSeconds);