Windows C++纳秒计时

Windows C++ nanosecond timing?

本文关键字:C++ Windows      更新时间:2023-10-16

在windows上的C++中有办法以纳秒为单位测量时间吗?

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

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

查看窗口上的QueryPerformanceCounter。

当计时代码以确定性能瓶颈时,您希望使用系统必须提供的最高分辨率计时器。这篇文章描述如何使用QueryPerformanceCounter函数计时应用程序代码

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

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

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

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

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

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