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
[静态]
若时间间隔计次始终为常量,即纵使在外部时钟调整的情况下,调用 now() 的返回值亦单调递增,则为 true,否则为 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>