命名空间
变体
操作

std::chrono::high_resolution_clock

来自 cppreference.cn
< cpp‎ | chrono
 
 
日期和时间库
时间点
(C++11)
(C++20)
时长
(C++11)
时钟
(C++20)
(C++20)
(C++20)
high_resolution_clock
(C++11)
(C++20)
(C++20)
(C++20)
日间时间
(C++20)(C++20)
(C++20)(C++20)
(C++20)
日历
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)(C++20)
chrono I/O
(C++20)

 
std::chrono::high_resolution_clock
 
定义于头文件 <chrono>
class high_resolution_clock;
(C++11 起)

std::chrono::high_resolution_clock 表示由实现提供的具有最小 tick 周期(即最高分辨率)的时钟。它可能是 std::chrono::system_clockstd::chrono::steady_clock 的别名,或者是第三个独立的自有时钟。

std::chrono::high_resolution_clock 满足 TrivialClock 的要求。

目录

[编辑] 成员类型

类型 定义
rep 表示时钟持续时间中 tick 数量的算术类型
period 一个 std::ratio 类型,表示时钟的“滴答”周期,以秒为单位
duration std::chrono::duration<rep, period>
time_point std::chrono::time_point<std::chrono::high_resolution_clock>

[编辑] 成员常量

constexpr bool is_steady
[静态]
如果 tick 之间的时间总是恒定的,即 now() 的调用返回即使在某些外部时钟调整的情况下也单调递增的值,则为 true,否则为 false
(public static 成员常量)

[编辑] 成员函数

[静态]
返回一个 std::chrono::time_point,表示时钟的当前值
(公共静态成员函数)

[编辑] 注意

关于 high_resolution_clock 的使用一直存在争议。Howard Hinnant 声称他将 high_resolution_clock 引入了该语言,在 2016 年在 ISO C++ 标准 - 讨论邮件列表上表示他赞成弃用它。他的理由是,因为标准允许它作为 std::chrono::steady_clockstd::chrono::system_clock 的别名,其使用会给程序增加不确定性而无益。然而,该线程中的其他参与者表示支持它,例如,基于 std::chrono::steady_clockstd::chrono::system_clock 都没有任何特定的分辨率保证,high_resolution_clock 通过为供应商提供机会来提供平台最高分辨率的时钟而发挥着有益的作用,因为其 std::chrono::steady_clockstd::chrono::system_clock 都不是最高分辨率的时钟。

它通常只是 std::chrono::steady_clockstd::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>