我正在尝试找出迭代多维 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);