Namespaces
Variants

std::chrono:: high_resolution_clock

From cppreference.net
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]

参见

来自系统全局实时时钟的挂钟时间
(类)
永不调整的单调时钟
(类)

外部链接

  1. libstdc++ <chrono.h>
  2. MSVC high_resolution_clock
  3. libc++ <high_resolution_clock.h>