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 [静态] |
若时间间隔计次始终为常量,即纵使在外部时钟调整的情况下,调用 now() 的返回值亦单调递增,则为 true,否则为 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) |
决不调整的单调时钟 (类) |