二维数组行遍历性能优于列遍历的原因

结论

行遍历优于列便利

通俗说法(从整体来理解)

数组在内存中是按行优先存储的,在虚存环境下,如果整个数组没有在内存中的话可以比列优先减少内存换进换出的次数。就算整个数组都在内存中,列优先访问a[i][j]还要计算一次乘法,行优先只需加一即可,换言之,乘法的“代价” 远大于加法

严谨的解释(从操作系统的角度解释)

Cache缓存机制,并非直接从内存读取,而是先访问Cache看里面有没有.

流程: 先从簇内存的值(chunk)读入cache,根据映射关系,如果Cache里没有要找的值,则去内存找.
这是操作系统的基本知识

重要的因素是缓存不包含单独的字节或字,它保存相邻内存的块,称为缓存线,通常大小为64字节。因此,当地址X在缓存中时,CPU可能不需要预先获取X+1,因为它可能已经获取了它(除非X是缓存行的最后一个字节,在这种情况下,它可能已经预取了下一个缓存行)。

另一种说法:缓存预测

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值