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

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

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
posted @ 2014-01-02 10:22  vcerror  阅读(689)  评论(0编辑  收藏  举报