名稱空間
變體
操作

std::chrono::high_resolution_clock

來自 cppreference.com
< 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>