Windows C ++纳秒计时?

时间:2012-04-04 21:56:44

标签: c++ windows performance visual-c++

在Windows上用C ++测量时间是否有办法以纳秒为单位?

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

4 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:4)

在Windows上查看QueryPerformanceCounter。

  

当用于识别性能瓶颈的计时代码时,您想要使用   系统必须提供的最高分辨率计时器。本文   描述了如何使用QueryPerformanceCounter函数来计时   应用程序代码

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

答案 2 :(得分:1)

如果你可以运行自己的程序集,你可以读取CPU的循环计数器,并用CPU的时钟频率划分循环差值:

static inline uint64_t get_cycles()
{
  uint64_t t;
  __asm__ __volatile__ ("rdtsc" : "=A"(t));
  return t;
}

答案 3 :(得分:1)

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

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

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