1、数组与链表对cpu缓存的友好性差异
因为CPU中的读取速度是比内存要快很多的。所以我们把一些数据通过CPU缓存能够显著提升性能。
而数组在内存中是占据连续的内存空间的,而CPU在从内存中读取数据的时候会把该内存地址后面的一部分数据也缓存进去。这样CPU在访问数组数据的时候先从CPU缓存的数组中寻找,找不到再从内存中复制。
这也就是CPU缓存的意义,为了弥补内存访问速度过慢和CPU执行速度过快的差异而应用。
而链表在内存中是以不连续的碎片的方式存储的。CPU并不能把后续的链表数据缓存起来,自然也没有性能的提升了。
而数组在内存中是占据连续的内存空间的,而CPU在从内存中读取数据的时候会把该内存地址后面的一部分数据也缓存进去。这样CPU在访问数组数据的时候先从CPU缓存的数组中寻找,找不到再从内存中复制。
这也就是CPU缓存的意义,为了弥补内存访问速度过慢和CPU执行速度过快的差异而应用。
而链表在内存中是以不连续的碎片的方式存储的。CPU并不能把后续的链表数据缓存起来,自然也没有性能的提升了。