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
[static]
|
若时间滴答间隔始终保持恒定(即即使发生外部时钟调整,调用
now()
返回的值仍保持单调递增)则为
true
,否则为
false
(公开静态成员常量) |
成员函数
|
[static]
|
返回表示时钟当前值的
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
的别名,具体取决于库实现或配置。当它是
system_clock
时,不具备单调性(例如时间可能回退)。举例来说,截至2023年,libstdc++ 将其作为
system_clock
的别名“直到实现高于纳秒精度变得可行”
[1]
,MSVC 将其实现为
steady_clock
[2]
,而 libc++ 在 C++ 标准库实现支持单调时钟时使用
steady_clock
,否则使用
system_clock
[3]
。
参见
|
(C++11)
|
来自系统全局实时时钟的挂钟时间
(类) |
|
(C++11)
|
永不调整的单调时钟
(类) |