0

timeGetTime函数文档说:

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

所以精度取决于系统。但是如果我不想提高精度怎么办,我只想知道它在当前系统中是什么。是否有标准方法(例如 API)来获取它?还是我应该轮询timeGetTime一段时间,看看结果如何并从中推断?

4

1 回答 1

1

我建议使用GetSystemTimeAsFileTime 函数。此函数开销低并显示系统时钟。请参阅此答案以获取有关时间粒度和用于查询计时器分辨率的 API 的更多详细信息(例如NtQueryTimerResolution)。找出系统文件时间增量的代码也可以在那里找到。 Windows 8并提供应该更准确Server 2012的新GetSystemTimePreciseAsFileTime 函数。MSDN 状态具有尽可能高的精度(<1us). 但是,这只适用于 W8 和 Server 2012,关于如何获得这种额外准确性的文档很少。似乎MS正在采用类似Linux(gettimeofday)的方式将性能计数器频率与系统时钟相结合。 这篇文章你也可能感兴趣。

编辑:截至 2014 年 2 月,MSDN 上有一些关于时间问题的更详细信息:Acquiring high-resolution time stamps

于 2013-03-28T08:50:32.333 回答