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]
。
関連項目
|
(C++11)
|
システム全体のリアルタイムクロックからの壁時計時間
(class) |
|
(C++11)
|
調整されることのない単調クロック
(class) |