【问题标题】:How to find out timeGetTime precision?如何找出 timeGetTime 精度?
【发布时间】:2013-03-18 14:11:03
【问题描述】:

timeGetTime 函数文档说:

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

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

【问题讨论】:

    标签: winapi time


    【解决方案1】:

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

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

    【讨论】:

    • 感谢您的建议。令人惊讶的是,测量时间这样的基本操作有多少(而且经常没有记录!)方法......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-17
    • 2020-06-01
    • 2011-08-27
    • 1970-01-01
    • 1970-01-01
    • 2019-07-13
    • 2023-03-15
    相关资源
    最近更新 更多