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
類別
標頭檔參考