- ベストアンサー
プログラムの実行時間の計測について
プログラムの実行時間を計測したいのですが、 どのようにすればよいですか? 使っている言語はC++です。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
実行時間といった場合、経過時間の場合と、純粋にプログラムが使ったCPUの消費時間の場合があります。 また、精度もどの程度必要かによって、Cの標準的なライブラリにある程度の物でよいか、 OSなどに固有のものを使うかが変わってきます。 QueryPerformanceCounterはWindowsではもっとも精度が高い時間(時刻相当)が得られますが、ミリ秒以下の時間が必要なことはそうないと思いますのであまり使うことはないと思います。 gettimeofdayは値としてはマイクロ秒単位までありますが、精度はそこまでありません。 QueryPerformanceCounter並みの精度が必要な場合は他の物を使います。
その他の回答 (4)
- galluda
- ベストアンサー率35% (440/1242)
がると申します。 もしUNIX系でなさっているようであれば、gettimeofdayという関数で細かい時間が取得できます。 あとは ・プログラムの前後に挟み込む ・別途「計測用プログラム」を組んで など、お好みの手段でOKかと思います。
- jacta
- ベストアンサー率26% (845/3158)
再び#1です。 環境が分からないので推測でしか答えられないのですが... フリースタンディング環境の場合、clock関数すら使えない可能性があります。 その場合でもμsec以下の精度で計測したいのであれば、適当な出力ポートに計測開始でHighを、計測終了でLowを出力するなどして、オシロスコープかロジックアナライザで計測するしかありません。
- rinkun
- ベストアンサー率44% (706/1571)
プログラムの処理前後に計測用コードを埋め込んで実行時間を計測する方法で宜しいか? この条件で環境依存で良ければWindowsやLinuxでは数マイクロ秒程度の精度で実時間を計測できる方法があります。 WindowsではQueryPerformanceCounterを使います。処理前後にQueryPerformanceCounterを呼び出して差分をとり、別途QueryPerformanceFrequencyでカウンタ周波数を取って割り算で処理時間を計算します。 Linuxではgettimeofdayで1マイクロ秒単位の現在時刻を取得できるので処理前後で差分を取れば処理時間が分かります。
- jacta
- ベストアンサー率26% (845/3158)
環境に依存しない方法としては、clock関数を使うしかないと思います。 目視で計測できるほど実行時間が長いのであれば、ストップウォッチで計るというのも一つの手です。