在 C++11 中,获取系统 ticks/time 的最快方法是什么?

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

我的程序 经常 调用 WINAPI 函数 timeGetTime(),应使用 <chrono>(标准库)替换它。获取系统时间的最快标准化方法是什么 - 在 floatint 中?

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

对于基准测试,您可能需要 std::chrono::high_resolution_clock. It may not be steady - in the sense that it "always increments". The only clock that guarantees steadiness is 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 即 High Resolution Timer。该技术允许您精确计算相对时间(例如某个函数调用花费了多少时间)。