【发布时间】:2010-12-15 23:15:16
【问题描述】:
我正在研究在我们的系统中使用 QueryPerformanceCounter 的确切含义,并试图了解它对应用程序的影响。从我的 4 核单 CPU 机器上运行它可以看出,它需要大约 230ns 才能运行。当我在 24 核 4 cpu xeon 上运行它时,运行大约需要 1.4 毫秒。更有趣的是,在我的机器上以多个线程运行时它们不会相互影响。但是在多 CPU 机器上,线程会导致某种交互,从而导致它们相互阻塞。 我想知道总线上是否有一些他们都查询的共享资源?当我调用 QueryPerformanceCounter 时究竟会发生什么?它真正衡量的是什么?
【问题讨论】:
-
omfg, 1.4ms !是的,现在这是一个很好的问题。根据这里:msdn.microsoft.com/en-us/library/windows/desktop/… 以 800ns 为例,这是一台表现不佳的机器。 1.4 毫秒会非常糟糕
-
我在编写分析器时也被这个问题困扰。每次函数启动和返回时都会查询计时器。使用
QueryPerformanceCounter会减慢程序的爬行速度。使用GetTickCount不会导致明显的减速,但它无法用于准确的分析......