Namespaces
Variants

std::chrono:: high_resolution_clock

From cppreference.net
std::chrono::high_resolution_clock
定義先ヘッダ <chrono>
class high_resolution_clock ;
(C++11以降)

クラス std::chrono::high_resolution_clock は、実装が提供する最小のティック周期を持つクロックを表します。これは std::chrono::system_clock または std::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
[static]
true ティック間の時間が常に一定である場合、すなわち外部クロック調整の場合でも now() の呼び出しが単調に増加する値を返す場合、そうでない場合は false
(公開静的メンバ定数)

メンバー関数

[static]
クロックの現在値を表す std::chrono::time_point を返す
(public static member function)

注記

high_resolution_clock の使用についてはいくつかの議論がある。 Howard Hinnantは、自身が high_resolution_clock を言語に導入したと主張しているが、2016年に ISO C++ Standard - Discussion メーリングリスト でこれを非推奨とする意見を表明した。その根拠は、標準で high_resolution_clock std::chrono::steady_clock または std::chrono::system_clock のエイリアスとして実装可能であるため、その使用は利点なくプログラムに不確実性を追加するというものだった。しかし、スレッドの他の参加者たちはこれを支持する意見も述べた。例えば、 std::chrono::steady_clock std::chrono::system_clock も特定の分解能保証を伴わないため、ベンダーがプラットフォームの最高分解能クロックを提供する機会を high_resolution_clock が与えるという点で有用な役割を果たすという主張がなされた。

これは多くの場合、 std::chrono::steady_clock または std::chrono::system_clock の単なるエイリアスですが、どちらになるかはライブラリや設定に依存します。 system_clock である場合、単調増加性が保証されません(例えば、時間が逆行する可能性があります)。例えば2023年現在、libstdc++ は「ナノ秒より高精度の定義が実現可能になるまで」 system_clock にエイリアスされています [1] 。MSVC では steady_clock として実装されています [2] 。また libc++ は、C++標準ライブラリの実装が単調増加クロックをサポートしている場合は steady_clock を、そうでない場合は system_clock を使用します [3]

関連項目

システム全体のリアルタイムクロックからの壁時計時間
(class)
調整されることのない単調クロック
(class)

外部リンク

  1. libstdc++ <chrono.h>
  2. MSVC high_resolution_clock
  3. libc++ <high_resolution_clock.h>