gpt4 book ai didi

performance - 我可以在 x86/x86_64 上自动递增 16 位计数器吗?

转载 作者:行者123 更新时间:2023-12-02 20:21:23 24 4
gpt4 key购买 nike

我想通过将现有的 32 位计数器转换为 16 位计数器来节省内存。该计数器以原子方式递增/递减。如果我这样做:

  1. 在 x86/x86_64 上对atomic_inc(uint16_t x) 使用什么指令?
  2. 这在多处理器 x86/x86_64 机器上可靠吗?
  3. 这样做是否会对这些架构造成性能损失?
  4. 如果 (3) 为"is",那么预期的性能损失是多少?

感谢您的评论!

最佳答案

这里使用 GCC 程序集扩展,作为 Steve 的 Delphi 答案的替代方案:

uint16_t atomic_inc(uint16_t volatile* ptr)
{
uint16_t value(1);
__asm__("lock xadd %w0, %w1" : "+r" (value) : "m" (*ptr));
return ++value;
}

将 1 更改为 -1,并将 ++ 更改为 --,以实现递减。

关于performance - 我可以在 x86/x86_64 上自动递增 16 位计数器吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1542006/

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