3

Windows 上的 C++ 中有没有办法以纳秒为单位测量时间?

我能找到的只是linux解决方案。

4

4 回答 4

6

使用该QueryPerformanceFrequency函数查看 QueryPerformanceCounter 的运行速度。我认为它可能在纳秒范围内。

于 2012-04-04T21:59:13.153 回答
4

查看 Windows 上的 QueryPerformanceCounter。

在对代码进行计时以识别性能瓶颈时,您希望使用系统必须提供的最高分辨率计时器。本文介绍如何使用 QueryPerformanceCounter 函数对应用程序代码进行计时

http://support.microsoft.com/kb/172338

于 2012-04-04T22:00:33.760 回答
1

使用 Windows7 和硬件计数器分析 API http://msdn.microsoft.com/en-us/library/windows/desktop/dd796395(v=vs.85).aspx

rdtsc 和 QueryPerformanceCounter/QueryPerformanceFrequency 都不够准确,因为开销大,中断和任务切换。

[编辑]:抱歉将 PerformanceCounter 的链接与硬件计数器混淆了。抱歉只使用过一次,这是一个快速的答案。

于 2012-04-04T22:01:29.580 回答
1

如果您可以运行自己的程序集,则可以读取 CPU 的周期计数器并将周期差除以 CPU 的时钟速率:

static inline uint64_t get_cycles()
{
  uint64_t t;
  __asm__ __volatile__ ("rdtsc" : "=A"(t));
  return t;
}
于 2012-04-04T21:59:08.453 回答