timeGetTime函数文档说:
timeGetTime 函数的默认精度可以是五毫秒或更多,具体取决于机器。您可以使用 timeBeginPeriod 和 timeEndPeriod 函数来提高 timeGetTime 的精度。
所以精度取决于系统。但是如果我不想提高精度怎么办,我只想知道它在当前系统中是什么。是否有标准方法(例如 API)来获取它?还是我应该轮询timeGetTime
一段时间,看看结果如何并从中推断?
我建议使用GetSystemTimeAsFileTime 函数。此函数开销低并显示系统时钟。请参阅此答案以获取有关时间粒度和用于查询计时器分辨率的 API 的更多详细信息(例如NtQueryTimerResolution
)。找出系统文件时间增量的代码也可以在那里找到。
Windows 8
并提供应该更准确Server 2012
的新GetSystemTimePreciseAsFileTime 函数。MSDN 状态具有尽可能高的精度(<1us). 但是,这只适用于 W8 和 Server 2012,关于如何获得这种额外准确性的文档很少。似乎MS正在采用类似Linux(gettimeofday)的方式将性能计数器频率与系统时钟相结合。
这篇文章你也可能感兴趣。
编辑:截至 2014 年 2 月,MSDN 上有一些关于时间问题的更详细信息:Acquiring high-resolution time stamps。