前に「MATLABが行列乗算で非常に高速である理由」で前述したように、いくつかの行列乗算ベンチマークを作成してい ます。
2つの2048x2048行列を乗算すると、C#と他の行列には大きな違いがあります。2047x2047の行列のみを乗算しようとすると、正常に見えます。比較のために他にもいくつか追加しました。
1024x1024-10秒。
1027x1027-10秒。
2047x2047-90秒。
2048x2048-300秒。
2049x2049-91秒。(更新)
2500x2500-166秒
これは、2k x 2kの場合の3.5分差です。
2dim配列の使用
//Array init like this
int rozmer = 2048;
float[,] matice = new float[rozmer, rozmer];
//Main multiply code
for(int j = 0; j < rozmer; j++)
{
for (int k = 0; k < rozmer; k++)
{
float temp = 0;
for (int m = 0; m < rozmer; m++)
{
temp = temp + matice1[j,m] * matice2[m,k];
}
matice3[j, k] = temp;
}
}