【发布时间】:2010-12-16 21:23:49
【问题描述】:
我最近决定需要将 Timer 类从使用毫秒更改为微秒,经过一些研究后,我认为 QueryPerformanceCounter 可能是我最安全的选择。 (Boost::Posix 上的警告说它可能不适用于 Win32 API,这让我有点失望)。但是,我不确定如何实现它。
我正在做的是调用我正在使用的任何GetTicks() esque 函数并将其分配给Timer 的startingTicks 变量。然后要找到经过的时间量,我只需从startingTicks 中减去函数的返回值,当我重置计时器时,我只需再次调用该函数并将startingTicks 分配给它。不幸的是,从我看到的代码来看,它并不像调用 QueryPerformanceCounter() 那样简单,而且我不确定我应该传递什么作为它的参数。
【问题讨论】:
-
我已将 Ramonster 的代码 sn-ps 放入此处的库中:gist.github.com/1153062 供关注者使用。
-
我们最近更新了 QueryPerformanceCounter 的文档,并添加了正确使用的附加信息以及常见问题解答。你可以在这里找到更新的文档msdn.microsoft.com/en-us/library/windows/desktop/…
-
顺便提一下__rdtsc,这是QueryPerformanceCounter使用的。