Я делаю некоторый бенчмаркинг матричного умножения, как ранее упоминалось в Почему MATLAB так быстро работает в матричном умножении?
Теперь у меня есть еще одна проблема: при умножении двух матриц 2048x2048 существует большая разница между С# и другими. Когда я пытаюсь умножить только матрицы 2047x2047, это кажется нормальным. Добавлены некоторые другие для сравнения.
1024x1024 - 10 секунд.
1027x1027 - 10 секунд.
2047x2047 - 90 секунд.
2048x2048 - 300 секунд.
2049x2049 - 91 секунд. (Обновление)
2500x2500 - 166 секунд
Это разница в три с половиной минуты для случая 2k на 2k.
с использованием массивов 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;
}
}