在 C++11 中,获取系统 ticks/time 的最快方法是什么?
In C++11, what is the fastest way to get system ticks/time?
我的程序 经常 调用 WINAPI 函数 timeGetTime()
,应使用 <chrono>
(标准库)替换它。获取系统时间的最快标准化方法是什么 - 在 float
或 int
中?
我不需要跟踪日期或时间,我只需要精确的相对 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,你
- 寻找系统特定
- 不是挂钟
你用 WinApi 标记了问题,我想,这是 Windows 特定的。
对于 Windows 即 High Resolution Timer。该技术允许您精确计算相对时间(例如某个函数调用花费了多少时间)。
我的程序 经常 调用 WINAPI 函数 timeGetTime()
,应使用 <chrono>
(标准库)替换它。获取系统时间的最快标准化方法是什么 - 在 float
或 int
中?
我不需要跟踪日期或时间,我只需要精确的相对 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,你
- 寻找系统特定
- 不是挂钟
你用 WinApi 标记了问题,我想,这是 Windows 特定的。
对于 Windows 即 High Resolution Timer。该技术允许您精确计算相对时间(例如某个函数调用花费了多少时间)。