gpt4 book ai didi

c++ - 由于引用计数器原子递增/递减,shared_ptrs 是否会遇到缓存未命中?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:51:02 26 4
gpt4 key购买 nike

(这可能是原子递增/递减的一般问题,但我在 shared_ptrs 领域遇到过这种情况)

当原子引用计数器递增和递减时,shared_ptr 是否遇到两次缓存行未命中/访问?

我确实找到了这个:

atomic operation cost

但它似乎并没有过于确定......

更新:

如果我运行一个循环数百万次,递增一个原子变量,我得到的 L1 缓存未命中率为 0.2。如果我对非原子 int 做同样的事情,我会得到 0 L1 缓存未命中率......

测试将暗示 L1 缓存行正在被逐出。

最佳答案

shared_ptr 必须在某处存储引用计数变量。它可能是从堆中分配的,并且 shared_ptr 包含指向该变量的指针。

访问这个变量完全有可能导致缓存操作,除非已经小心地将它们放在相同的 block 中,这是极不可能的。

如果您担心这对性能的影响,请创建一个带有整数的类来计算引用,一个使用它的自定义指针类,并从您的引用计数类中派生出您想要像这样管理的每个类。

关于c++ - 由于引用计数器原子递增/递减,shared_ptrs 是否会遇到缓存未命中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24068526/

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