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) |
永不调整的单调时钟 (类) |