std::chrono::high_resolution_clock
在头文件 <chrono> 中定义 |
||
class high_resolution_clock; |
(自 C++11 起) | |
类 std::chrono::high_resolution_clock
表示实现提供的最小刻度周期的时钟。它可能是 std::chrono::system_clock 或 std::chrono::steady_clock 的别名,或者是一个独立的第三方时钟。
std::chrono::high_resolution_clock
满足 TrivialClock 的要求。
内容 |
[编辑] 成员类型
成员类型 | 定义 |
rep
|
表示时钟持续时间内刻度数量的算术类型 |
period
|
一个 std::ratio 类型,表示时钟的刻度周期(以秒为单位) |
duration
|
std::chrono::duration<rep, period> |
time_point
|
std::chrono::time_point<std::chrono::high_resolution_clock> |
[编辑] 成员常量
constexpr bool is_steady [静态] |
true 如果刻度之间的时间始终是恒定的,即对 now() 的调用返回的值即使在某些外部时钟调整的情况下也单调递增,否则为 false (公共静态成员常量) |
[编辑] 成员函数
[静态] |
返回一个 std::chrono::time_point,表示时钟的当前值 (公共静态成员函数) |
[编辑] 注释
关于使用 high_resolution_clock
一直存在一些争议。Howard Hinnant 声称自己在语言中引入了 high_resolution_clock
,他在 2016 年的 ISO C++ 标准 - 讨论邮件列表 中表示,他支持将其弃用。他的理由是,由于标准允许它作为 std::chrono::steady_clock 或 std::chrono::system_clock 的别名,因此它的使用在没有好处的情况下增加了程序的不确定性。但是,该主题的其他参与者表达了赞成意见,例如基于以下理由:由于 std::chrono::steady_clock 和 std::chrono::system_clock 都没有特定分辨率保证,因此 high_resolution_clock
通过让供应商有机会提供平台的最高分辨率时钟(当其 std::chrono::steady_clock 或 std::chrono::system_clock 不是那样时),起到了有用的作用。
它通常只是 std::chrono::steady_clock 或 std::chrono::system_clock 的别名,但它是哪一个取决于库或配置。当它是 system_clock
时,它不是单调的(例如,时间可以倒退)。例如,截至 2023 年,libstdc++ 将其设为 system_clock
的别名,“直到比纳秒更高的定义变得可行”[1],MSVC 将其设为 steady_clock
[2],而 libc++ 在 C++ 标准库实现支持单调时钟时使用 steady_clock
,否则使用 system_clock
[3]。
[编辑] 另请参阅
(C++11) |
来自系统范围实时时钟的挂钟时间 (类) |
(C++11) |
永远不会调整的单调时钟 (类) |