While learning about how hardware caching is implemented in a computer architecture class, for fun, I ran some benchmarks on C code accessing a 2D array in row-major vs. column-major. The row-major code ran in 0.000001
seconds, whereas the column-major code ran in 0.224663
seconds. This is due to the way caching memory is laid out in the cache.
It occured to me afterwards to test if Ruby had a similiar issue. After running the same test in C, Ruby row-major code ran in 1.471860
seconds, whereas the column-major code ran in 1.609366
seconds. So, if you want a quick speed fix when dealing with multi-dimensional arrays, flip those i’s and j’s.