Boost.Timerは、コードのパフォーマンスを測定するためのクロックを提供します。このライブラリはBoost.Chronoと競合するように最初は、それが見えるかもしれません。Boost.Chronoは任意の期間を測定するためのクロックを提供しながら、しかし、Boost.Timerは、コードを実行するのにかかる時間を測定します。あなたは、コードのパフォーマンスを測定したいときBoost.TimerはBoost.Chronoを使用しますが、あなたはBoost.TimerではなくBoost.Chronoを使用する必要があります。
1. cpu_timer
書式#include </タイマー/ timer.hpp後押し> の#include <iostreamの> の#include <cmath> 使用して名前空間ブースト::タイマーを。INT メイン() { cpu_timerタイマー。以下のために(int型 = Iを0 ;私は< 1000000 ; ++ I) のstd :: POW(1.234 、I); std :: coutの << timer.format()<< はstd ::てendl; リターン0 ; }
ブースト::タイマー:: cpu_timerがインスタンス化されたときに測定を開始します。あなたは、経過時間を取得するために、任意の時点でのメンバ関数の形式を()を呼び出すことができます。
出力は次のようになります。
0.057313s壁、0.050000ユーザー+ 0.000000sシステム= 0.050000 CPU(87.2パーセント)
壁時間はウォールクロックに従って通過時間です。CPU時間は、プログラムコードの実行に費やさどのくらいの時間を言います。CPU時間は、カーネル空間で過ごしたユーザ空間と時間の中で過ごした時間の間で分割されます。
2.タイマーを停止し、再開
書式#include </タイマー/ timer.hpp後押し> の#include <iostreamの> の#include <cmath> 使用して名前空間ブースト::タイマーを。INT メイン() { cpu_timerタイマー。以下のために(int型 = Iを0 ;私は< 1000000 ; ++ I) のstd :: POW(1.234 、I); std :: coutの << timer.format()<< はstd ::てendl; timer.stop(); 以下のために(int型 = Iを0 ;私は< 1000000 ; ++ I) のstd :: POW(1.234 、I); std :: coutの << timer.format()<< はstd ::てendl; timer.resume(); 以下のために(int型 = Iを0 ;私は< 1000000 ; ++ I) のstd :: POW(1.234 、I); std :: coutの << timer.format()<< はstd ::てendl; リターン 0 ; }
後押し::タイマー:: cpu_timerは停止し、タイマーを再開メンバ関数停止()と履歴書を()、提供します。後押し::タイマー:: cpu_timerもメンバ関数の開始を提供()。ゼロからあなたは()の開始を呼び出すと、タイマーが再起動します。
3.タプルとして壁とCPU時間を取得
書式#include </タイマー/ timer.hpp後押し> の#include <iostreamの> の#include <cmath> 使用して名前空間ブースト::タイマーを。INT メイン() { cpu_timerタイマー。以下のために(int型 = Iを0 ;私は< 1000000 ; ++ I) のstd :: POW(1.234 、I); cpu_times回数 = timer.elapsed()。 std :: coutの << times.wall << はstd ::てendl; std :: coutの << times.user << はstd ::てendl; std :: coutの << times.system << はstd ::てendl; リターン0 ; }
後押し::タイマー:: cpu_timer経過メンバ関数を提供します()。経過()型ブーストのタプルを返します::タイマー::回。壁、ユーザーおよびシステム:このタプルは3メンバーvariblesを持っています。これらのメンバ変数は、ナノ秒単位で壁やCPU時間を含んでいます。後押し::タイマーを::回を0に壁、ユーザーとシステムを設定するには、clear()メンバ関数を提供します。
4. auto_cpu_timer
書式#include <ブースト/タイマー/ timer.hpp> の#include <cmath> 使用して名前空間のブーストを::タイマー。INT メイン() { タイマーauto_cpu_timer。以下のために(int型 = Iを0 ;私は< 1000000 ; ++ I) のstd :: POW(1.234 、I); リターン0 ; }
このクラスのデストラクタは、時間を計測停止し、標準出力ストリームに時間を書き込みます。