Does Array Order Matter?
static double arr[1000][1000];
double test1 ()
{ double sum; int i, j;
sum = 0.0;
for (i=0; i<1000; i++)
for (j=0; j<1000; j++) /* inner loop j */
sum = sum + arr[i][j]; /* is righmost [j] */
return (sum); }
double test2 ()
{ double sum; int i, j;
sum = 0.0;
for (j=0; j<1000; j++)
for (i=0; i<1000; i++)
sum = sum + arr[i][j];
return (sum); }
The two programs compute the same result, but performance is quite different:
test1 result = 1000000.0 time = 430000 test2 result = 1000000.0 time = 1940000