结论
行遍历优于列便利
通俗说法(从整体来理解)
数组在内存中是按行优先存储的,在虚存环境下,如果整个数组没有在内存中的话可以比列优先减少内存换进换出的次数。就算整个数组都在内存中,列优先访问a[i][j]还要计算一次乘法,行优先只需加一即可,换言之,乘法的“代价” 远大于加法
严谨的解释(从操作系统的角度解释)
Cache缓存机制,并非直接从内存读取,而是先访问Cache看里面有没有.
流程: 先从簇内存的值(chunk)读入cache,根据映射关系,如果Cache里没有要找的值,则去内存找.
这是操作系统的基本知识
重要的因素是缓存不包含单独的字节或字,它保存相邻内存的块,称为缓存线,通常大小为64字节。因此,当地址X在缓存中时,CPU可能不需要预先获取X+1,因为它可能已经获取了它(除非X是缓存行的最后一个字节,在这种情况下,它可能已经预取了下一个缓存行)。
另一种说法:缓存预测