Most modern computer languages (except Fortran) use * row-major order*,
in which elements of a matrix row are adjacent
in memory: ` A[i][j]` is stored as:

` [j]`

` [i]`

0 | 1 | 2 | ... | n |

0 | 1 | 2 | ... | n |

0 | 1 | 2 | ... | n |

To get the best performance, ` j` should be the index of the
inner loop, so that ` j` will vary fastest and accesses will
be adjacent:

for (i=0; i<1000; i++) for (j=0; j<1000; j++) sum = sum + arr[i][j];