可能性の重複:
Why is my program slow when looping over exactly 8192 elements?C++配列アクセス速度は[a] [b]の順序に基づいて変化しますか?
私は単純に2次元配列の要素を合計する使用しているプログラムの周りいじってきました。タイプミスは少なくとも私には見えるもの、いくつかの非常に奇妙な結果につながった。
配列、行列[SIZE] [SIZE]を扱う場合:
for(int row = 0; row < SIZE; ++row)
for(int col = 0; col < SIZE; ++col)
sum1 += matrix[row][col];
ラン非常に迅速に、しかし...修正される上記ラインSUM1である:
sum2 += matrix[col][row]
私がしたように一度事故に気付かずに、私はランタイムが大幅に増加することに気付く。どうしてこれなの?
キャッシュのローカリティ。 –
**配列やループを持つFORTRANコードを文字通りC/C++に翻訳しないでください! –