gpt4 book ai didi

c++ - 调用 QueryPerformanceCounter 时会发生什么?

转载 作者:IT老高 更新时间:2023-10-28 21:57:29 28 4
gpt4 key购买 nike

我正在研究在我们的系统中使用 QueryPerformanceCounter 的确切含义,并试图了解它对应用程序的影响。从我的 4 核单 CPU 机器上运行它可以看出,它需要大约 230ns 才能运行。当我在 24 核 4 cpu xeon 上运行它时,运行大约需要 1.4 毫秒。更有趣的是,在我的机器上以多个线程运行时它们不会相互影响。但是在多 CPU 机器上,线程会导致某种交互,从而导致它们相互阻塞。 我想知道总线上是否有一些他们都查询的共享资源?当我调用 QueryPerformanceCounter 时究竟会发生什么?它真正衡量的是什么?

最佳答案

Windows QueryPerformanceCounter() 具有确定处理器数量并在必要时调用同步逻辑的逻辑。它尝试使用 TSC 寄存器,但对于多处理器系统,该寄存器不能保证在处理器之间同步(更重要的是,由于智能降频和 sleep 状态可能会有很大差异)。

MSDN 表示调用哪个处理器并不重要,因此您可能会看到针对这种情况的额外同步代码会导致开销。另请记住,它可以调用总线传输,因此您可能会看到总线争用延迟。

如果可能,尝试使用 SetThreadAffinityMask() 将其绑定(bind)到特定处理器。否则,您可能只需要忍受延迟,或者您可以尝试不同的计时器(例如查看 http://en.wikipedia.org/wiki/High_Precision_Event_Timer)。

关于c++ - 调用 QueryPerformanceCounter 时会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1723629/

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