如何找出timeGetTime精度?

时间:2013-03-28 07:59:18

标签: winapi time

timeGetTime函数文档说:

  

timeGetTime函数的默认精度可以是5毫秒或更长,具体取决于机器。您可以使用timeBeginPeriod和timeEndPeriod函数来提高timeGetTime的精度。

因此精度取决于系统。但是如果我不想增加精度,我只想知道它在当前系统中是什么。是否有标准方式(例如API)来获取它?或者我应该暂时评估timeGetTime并查看出现的内容并从那里推断出来?

1 个答案:

答案 0 :(得分:1)

我建议使用GetSystemTimeAsFileTime function。此功能具有较低的开销并显示系统时钟。请参阅this answer以获取有关查询计时器分辨率的时间粒度和API的更多详细信息(例如NtQueryTimerResolution)。也可以在此处找到用于查找系统文件时间增量的代码。 Windows 8Server 2012提供了应该更准确的新GetSystemTimePreciseAsFileTime function。 MSDN以最高精度(<1us)表示。但是,这仅适用于W8和Server 2012,并且几乎没有关于如何获得此额外准确性的文档。似乎MS正在以类似于Linux(gettimeofday)的方式将性能计数器频率与系统时钟结合起来。 This post也可能对您感兴趣。

修改:截至2014年2月,有关MSDN时间问题的更详细信息:Acquiring high-resolution time stamps