gpt4 book ai didi

c++ - 访问多个数组时 cpu 缓存做什么?

转载 作者:行者123 更新时间:2023-11-30 04:44:49 25 4
gpt4 key购买 nike

假设我们有 2 个巨大的数组 (20MB+),我们做这样的事情:

for(int i = 0; i < length; i++) {
arrayA[i] = 13;
arrayB[i] = 13;
}

这将如何加载到缓存中?什么时候从缓存中卸载?

最佳答案

老实说 CPU 缓存有点善变,但是有一些方法可以改进缓存,不惜一切代价避免多维数组和嵌套 vector ,CPU 缓存讨厌这些,也避免任何类型的链表,或者我喜欢称它们为菊花链类型,例如链表、unorderedmap 和其他标准容器,它们不会平坦地存储在内存中,因此 CPU 不会对其进行缓存,如果您想使用类型安全的平面数组或使用 std,那么使用 CPU 缓存的最好的 friend 就是老式 vector阵列,或者走老路,简单地使用 C 风格的阵列,这些都是平面容器,当 CPU 缓存中有空间时,大多数情况下都会被缓存,CPU 缓存还有很多,但这只是一个非常非常在谈到缓存时,关于容器方面什么和什么不能使用的基本见解,GameDev net 和其他网站上有一些非常好的文章,如果你在谷歌上搜索 c++ 缓存友好代码,

所以简单地说你当前的代码将不会被缓存....好吧我不会说永远不会因为这些天 CPU 变得非常好,但是缓存不会支持你的代码并且会选择在它时从内存中调用它需要它,这在某些情况下会影响您的表现,

希望这能说明一些问题(=

关于c++ - 访问多个数组时 cpu 缓存做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57560161/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com