C++ のクロノ
system_ Clock は、システム全体のリアルタイムの壁時計を表します。システムの時刻調整の影響を受けます。
steady_ Clock は、システム時間の変更の影響を受けずに単調増加するクロックを表します。
high_resolution_ Clock は、システム上で利用可能な最小のティック周期を持つクロックです。
さらに
Chrono ライブラリは日付と時刻を扱うために使用されます。このライブラリは、タイマーとクロックがシステムごとに異なる可能性があるという事実に対処し、時間の経過とともに精度が向上するように設計されました。クロノのユニークな点は、 特定のクロックから期間と時点 (タイムポイント) を分離することによる、精度中立の概念。 chrono はヘッダーの名前であり、サブ名前空間の名前でもあります。このヘッダー内のすべての要素 (common_type 特殊化を除く) は、(ほとんどの標準ライブラリと同様) std 名前空間の下で直接定義されるのではなく、 std::chrono 名前空間 。このヘッダーの要素は時間を扱います。これは主に次の 3 つの概念によって行われます。
間隔
期間オブジェクトは、分、2 時間、または 10 ミリ秒などのカウントによって時間範囲を表します。 たとえば、「42 秒」は、1 秒の時間単位の 42 ティックで構成される期間で表すことができます。
CPP // C++ program to illustrate the utility // function duration::count #include #include int main () { using namespace std :: chrono ; // std::chrono::milliseconds is an // instantiation of std::chrono::duration:- 1 second milliseconds mil ( 1000 ); mil = mil * 60 ; std :: cout & lt ; & lt ; & quot ; duration ( in periods ) : & quot ;; std :: cout & lt ; & lt ; mil . count () & lt ; & lt ; & quot ; milliseconds . n & quot ;; std :: cout & lt ; & lt ; & quot ; duration ( in seconds ) : & quot ;; std :: cout & lt ; & lt ; ( mil . count () * milliseconds :: period :: num / milliseconds :: period :: den ); std :: cout & lt ; & lt ; & quot ; seconds . n & quot ;; return 0 ; }
出力:
duration (in periods): 60000 milliseconds. duration (in seconds): 60 seconds.
クロック
クロックは、開始点 (またはエポック) とティック レートで構成されます。たとえば、時計のエポックが 1996 年 2 月 22 日で、毎秒時を刻むとします。 C++ では、次の 3 つのクロック タイプが定義されています。
時点
time_point オブジェクトは、クロックのエポックを基準とした時点を表します。内部的には、オブジェクトは継続時間タイプのオブジェクトを格納し、そのエポックの参照として Clock タイプを使用します。
CPP // C++ program to illustrate time point // and system clock functions #include #include #include // Function to calculate // Fibonacci series long fibonacci ( unsigned n ) { if ( n & lt ; 2 ) return n ; return fibonacci ( n -1 ) + fibonacci ( n -2 ); } int main () { // Using time point and system_clock std :: chrono :: time_point & lt ; std :: chrono :: system_clock & gt ; start end ; start = std :: chrono :: system_clock :: now (); std :: cout & lt ; & lt ; & quot ; f ( 42 ) = & quot ; & lt ; & lt ; fibonacci ( 42 ) & lt ; & lt ; 'n' ; end = std :: chrono :: system_clock :: now (); std :: chrono :: duration & lt ; double & gt ; elapsed_seconds = end - start ; std :: time_t end_time = std :: chrono :: system_clock :: to_time_t ( end ); std :: cout & lt ; & lt ; & quot ; finished computation at & quot ; & lt ; & lt ; std :: ctime ( & amp ; end_time ) & lt ; & lt ; & quot ; elapsed time : & quot ; & lt ; & lt ; elapsed_seconds . count () & lt ; & lt ; & quot ; s n & quot ;; }
出力:
f(42) = 267914296 finished computation at Wed Jan 4 05:13:48 2017 elapsed time: 2.14538s
によって提供されるクロックと期間の精度と精度に注意することが重要です。
クイズの作成