Arrays 链表与数组:物理内存中哪个更连续?
数组在物理内存中不一定是连续的,尽管它们在虚拟地址空间中是连续的。但是可以说,与链表相比,物理内存中数组的“整洁度”要高得多吗?那么,对于缓存友好型程序来说,哪一个更好呢?连续内存比非连续内存更适合缓存的原因有两个:Arrays 链表与数组:物理内存中哪个更连续?,arrays,c,caching,memory,Arrays,C,Caching,Memory,数组在物理内存中不一定是连续的,尽管它们在虚拟地址空间中是连续的。但是可以说,与链表相比,物理内存中数组的“整洁度”要高得多吗?那么,对于缓存友好型程序来说,哪一个更好呢?连续内存比非连续内存更适合缓存的原因有两个: 如果数据是连续存储的,那么数据可能存储在更少的内存中(在大多数平台上是64字节块)。在这种情况下,所有数据都将装入缓存的可能性更高,加载新缓存线的频率也会更低。如果数据不是连续存储的,而是分散在许多随机内存位置,则每个缓存线中可能只有一小部分包含重要数据,而其余缓存线则包含不重要的
通常,数组在缓存效率方面优于链表,因为它们总是连续的(在虚拟地址空间中)。我认为这个问题只关注一个问题!我投票赞成重新讨论这个问题。即使这篇文章包含几个问题,这些问题也是如此密切相关,以至于它们实际上是一个问题。此外,我不认为这个问题太广泛。