行列の乗算でMATLABが非常に高速である理由で前述したように、行列の乗算のベンチマークを作成してい ます。
ここで別の問題があります。2つの2048x2048行列を乗算する場合、C#と他の行列には大きな違いがあります。2047x2047の行列だけを乗算しようとすると、正常に見えます。比較のために他にもいくつか追加しました。
1024x1024-10秒。
1027x1027-10秒。
2047x2047-90秒。
2048x2048-300秒。
2049x2049-91秒。(アップデート)
2500x2500-166秒
これは、2kx2kの場合の3分半の違いです。
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;
}
}