数组、链表对于内存及CPU访问缓存机制

今天看文章学到了一个知识点记录一下

CPU缓存对数组友好而对链表不友好

“ 数组简单易用,在实现上使用的是连续的内存空间,可以借助CPU的缓存机制,预读数组中的数据,所以访问效率越高。而链表在内存中并不是连续存储,所以对CPU缓存不友好,没有办法预读。”

原因:CPU读取内存的时候,会把一片连续的内存块读取出来,然后放到缓存中。因为数组结构是连续的内存地址,所以数组全部或者部分元素被连续存在CPU缓存里面,cpu读取缓存里面的每个元素的时间平均只要3个CPU时钟周期。而链表的节点是分散在堆空间(内存)里面的,cpu需要去读取内存,平均读取时间需要100个CPU时钟周期。

所以cpu访问数组比链表快了大约33倍!(这是理论上而言)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值