命名空间
变体
操作

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 表示实现所提供的最小嘀嗒周期的时钟。它可以是 std::chrono::system_clockstd::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_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>