steady_clock 構造体

調整されることがなく、一様な速度で前方に移動するクロックを表します。

構文

struct steady_clock;

解説

A steady_clock は単調なクロックです。つまり、報告される時間は前方にのみ移動します。 呼び出しによって返される値は、常に次の呼び出 nownowで返される値以下です。

A steady_clock を使用すると、ティック間の時間が一定になり、システム クロックを使用するよりも間隔を測定する方が適しています。 システム クロックは、実時間を提供します。 壁時計の時間を使用して経過時間を測定する場合の問題は、時間間隔の測定中に壁時計の時間が変更される可能性があるということです。 ネットワーク経由で別のクロックと同期したり、夏時間に移行したりして、変更できます。 steady_clock は、このような調整の対象とならないため、経過時間を追跡方法として推奨されます。

high_resolution_clocksteady_clock の typedef です。 Windows では、steady_clockQueryPerformanceCounter 関数をラップします。

#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> と定義されます。 10 億分の 1 秒単位で測定された期間を表します。
steady_clock::period Microsoft の実装では、nano の同意語で、std::ratio<1i64, 1000000000i64> と定義されます。 期間の各ティック間の時間を 10 億分の 1 秒単位で表します。
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安定しています。 つまり、このクロックを使用すると、イベントの前の時間、イベントの後の時間、およびイベントの継続時間を取得し、それらを確実に減算してイベントの時間を取得できます。その間に、クロックが調整されてることがないためです。

必要条件

ヘッダー:<chrono>

名前空間std::chrono:

関連項目

<chrono>
file_clock class
high_resolution_clock
local_t 構造体
system_clock 構造体
tai_clock クラス
utc_clock クラス
ヘッダー ファイル リファレンス