现在的位置: 首页 > 综合 > 正文

精度试验结果报告Sleep, GetTickCount, timeGetTime, QueryPerformanceCounter

2017年10月20日 ⁄ 综合 ⁄ 共 497字 ⁄ 字号 评论关闭

一段简单的代码来实现精度试验

int main()
{
      // 初始化代码
      ......
      int i = 0;
      while(i++ < 1000)
      {
             // 获取时间代码

             ......

             printf(...); // 将时间打出
      }
}

通过结果可以看出Sleep, GetTickCount都是10~35ms左右的时间跳跃,timeGetTime为1ms,QueryPerformanceCounter和QueryPerformanceFrequency根据CPU频率计时,可以到100ns。

说明Windows中常用的计时函数中,标准计时函数(Sleep, GetTickCount)精度100ms, 多媒体时钟timeGetTime精度1ms,系统晶振大概可以到1us或100ns左右。

可以用来做定时器的计时函数一般都在标准计时的精度范围(CreateWaitableTimer),只有多媒体时钟定时器要高一些。如果想要更高精度的定时器,目前看来Windows没有提供,但是,我们可以通过开发更底层的驱动来获得应用层的高精度定时器,大概可以精确到10us~100us

抱歉!评论已关闭.