ちょっとした実験

メモリアクセスパターンによって実行速度がどのくらい変わるかを調査してみた。各所で散々やられている実験だけど、自分でやったことはなかったので・・・

  • 1.配列に行=>列のようにアクセスする場合


#define N 10000
int a[N][N];
int main()
{
int i=0;
int j=0;

for(j=0;j

  • 2.配列に列=>行のようにアクセスする場合


#define N 10000
int a[N][N];
int main()
{
int i=0;
int j=0;

for(j=0;j
結果

    • 1の場合

real 0m1.434s
user 0m1.143s
sys 0m0.287s

    • 2の場合

real 0m0.528s
user 0m0.294s
sys 0m0.233s

やっぱりかなり変わる。しかし、3倍近くも違うのは驚き