ちょっとした実験
メモリアクセスパターンによって実行速度がどのくらい変わるかを調査してみた。各所で散々やられている実験だけど、自分でやったことはなかったので・・・
- 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倍近くも違うのは驚き