在 C++11 中,获取系统即时报价/时间的最快方法是什么?

In C++11, what is the fastest way to get system ticks/time?

本文关键字:方法 是什么 时间 C++11 获取 即时报价 系统      更新时间:2023-10-16

我的程序经常调用WINAPI函数timeGetTime(),应该用<chrono>(标准库)代替。对于我的情况,获取系统时间的最快标准化方法 - 以floatint为单位?

不需要跟踪日期或日期时间,我只需要精确的相对毫秒/秒值,它总是递增。有吗?

对于基准测试,您可能需要std::chrono::high_resolution_clock .它可能不稳定 - 从某种意义上说,它"总是递增"。唯一保证稳定的时钟是 std::chrono::steady_clock .

最好、最稳定的时钟是:

using ClockType = std::conditional<
    std::chrono::high_resolution_clock::is_steady,
    std::chrono::high_resolution_clock,
    std::chrono::steady_clock>::type;

请注意,high_resolution_clock本身可能只是 steady_clock 的别名。

如果你需要精确的相对ms,你是

  1. 寻找特定于系统的
  2. 不是挂钟

你用WinApi标记了问题,我认为,这是特定于Windows的。

对于Windows,这是高分辨率计时器。这项技术允许您精确计算相对时间(例如,在某些函数调用中花费了多少时间)。