命名空间
变体
操作

std::chrono::high_resolution_clock

来自 cppreference.com
< cpp‎ | chrono
 
 
实用程序库
语言支持
类型支持 (基本类型,RTTI)
库功能测试宏 (C++20)
动态内存管理
程序实用程序
协程支持 (C++20)
可变参数函数
调试支持
(C++26)
三元比较
(C++20)
(C++20)(C++20)(C++20)
(C++20)(C++20)(C++20)
通用实用程序
日期和时间
函数对象
格式化库 (C++20)
(C++11)
关系运算符 (C++20 中已弃用)
整数比较函数
(C++20)(C++20)(C++20)   
(C++20)
交换类型操作
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
通用词汇类型
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)
基本字符串转换
(C++17)
(C++17)

 
日期和时间实用程序
时间点
(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)
(C++20)
(C++20)(C++20)(C++20)(C++20)  
(C++20)
chrono I/O
(C++20)
C 样式日期和时间
 
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>