是不是更有可能通过使用堆而不是堆栈来获取缓存未命中?

时间:2015-06-06 21:43:13

标签: arrays caching memory optimization cpu

由于堆栈内存按使用顺序写入,因此它自然具有很多缓存友好性。但是,如果我从存储在堆上的大型数组中查询数据,我是否有更多机会获得缓存未命中?

因此,每次我需要读取或写入时,将数据切割成较小的数组并将它们从堆复制到堆栈是不是最好的做法,而不是查询位于堆上的内存段?

如果我必须经常读/写数据数组并且可以设法使这些数组适合缓存,那么在处理数据时我不应该完全避免使用堆吗?

1 个答案:

答案 0 :(得分:1)

我不确定为什么你认为堆栈会更加缓存友好。虽然堆内存不一定按“按顺序”分配,但如果分配大块RAM,它将完全连续。这是malloc及其朋友realloccalloc之类的内容保证的一部分。

如果您追求速度和效率,将阵列分配到一个位置并将其留在那里更有效,而不是来回复制它。 :)