steady_clock 結構

表示永遠不會調整且以統一速率向前移動的時鐘。

語法

struct steady_clock;

備註

steady_clock是單調時鐘,這表示報告的時間只會向前移動。 呼叫 now 所傳回的值一律小於或等於下一次呼叫 now 所傳回的值。

可確保 steady_clock 刻度之間的時間是固定的,因此比使用系統時鐘更適合測量間隔。 系統時鐘提供時鐘時間。 使用時鐘時間測量已耗用時間的問題在於,在測量時間間隔時,可能會修改時鐘時間。 透過網路與另一個時鐘進行同步處理、轉換至日光節約時間等等,即可修改它。 steady_clock不受限於這些調整,因此是追蹤經過時間的慣用方式。

high_resolution_clock 是 的 steady_clock typedef。 在 Windows 上, steady_clock 包裝函 QueryPerformanceCounter 式。

範例

#include <chrono> 
#include <thread>
#include <iostream>

using namespace std::chrono;

int main()
{
    auto begin = steady_clock::now();
    std::this_thread::sleep_for(std::chrono::seconds(1));
    auto end = steady_clock::now();
    
    std::cout << "Elapsed seconds:      "
        << duration_cast<seconds>(end - begin).count()
        << "s\n";

    std::cout << "Elapsed milliseconds: "
        << duration_cast<milliseconds>(end - begin).count()
        << "ms\n";

    std::cout << "Elapsed microseconds: "
        << duration_cast<microseconds>(end - begin).count()
        << "us\n";

    std::cout << "Elapsed nanoseconds:  "
        << duration_cast<nanoseconds>(end - begin).count()
        << " ns\n";

    return 0;
}
Elapsed seconds:      1s
Elapsed milliseconds: 1007ms
Elapsed microseconds: 1007266us
Elapsed nanoseconds:  1007266700 ns

便利類型別名

名稱 描述
steady_clock::duration 在 Microsoft 的實作中,它是 的 nanoseconds 同義字,其定義為 duration<long long, nano> 。 它代表以每秒十億分之一秒為單位的時間持續時間。
steady_clock::period 在 Microsoft 的實作中,它是 的 nano 同義字,其定義為 std::ratio<1i64, 1000000000i64> 。 它代表持續時間中每個刻度之間的秒數(每秒 10 億分之一)。
steady_clock::rep long long 同義字,這是 Microsoft 實作中用來代表 中時鐘刻度數目的類型 steady_clock::duration
steady_clock::time_point time_point<steady_clock> 的同義字。 用來表示 time_point 這個時鐘的 。

公用函式

函式 描述
now 從 傳回目前的時間 steady_clock 做為 time_point 值。

公用常數

名稱 描述
steady_clock::is_steady 保有 true steady_clock 為 steady。 這表示您可以使用這個時鐘來取得事件之前的時間、事件之後的時間,並可靠地減去它們以取得事件的持續時間,因為該時間不會調整時鐘。

需求

標頭:<chrono>

命名空間:std::chrono

另請參閱

<chrono>
file_clock class
high_resolution_clock
local_t 結構
system_clock 結構
tai_clock 類別
utc_clock 類別
標頭檔參考