とても基本的な質問だと思うのですが・・・
Windowsで、あるプログラムにおいて、<time.h>をインクルードして、
start = clock();
[計測したい処理]
end = clock();
double time = (double)(end-start)/CLOCK_PER_SEC;
として、時間の計測を行ったのですが、この場合のtimeの単位は[ms]なのでしょうか?それともなのでしょうか?
どなたかよろしくお願いいたします。
時間計測について
Re: 時間計測について
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: 時間計測について
なるほど。ありがとうございます。
ということは、CLOCKS_PER_SECで割らなければ(/CLOCKS_PER_SECを削除すると)、[ms]が得られるということですか?
ということは、CLOCKS_PER_SECで割らなければ(/CLOCKS_PER_SECを削除すると)、[ms]が得られるということですか?
Re: 時間計測について
clock()で得られる数値の単位は,規格的には決まっていなかったと思います.msecが妥当なので使っている処理系が多いだけだと思います.
CLOCK_PER_SECは,その名の通り「クロック/秒」ですから,
(double)(end-start)/CLOCK_PER_SEC
= [clock] / [clock / sec]
= [sec]
ということになります.
先にも書きましたが,clock()の単位が(規格的に)分からないため,CLOCK_PER_SECで割ることで,秒単位に直します.
CLOCK_PER_SECは,その名の通り「クロック/秒」ですから,
(double)(end-start)/CLOCK_PER_SEC
= [clock] / [clock / sec]
= [sec]
ということになります.
先にも書きましたが,clock()の単位が(規格的に)分からないため,CLOCK_PER_SECで割ることで,秒単位に直します.
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: 時間計測について
Windowsにおいてms単位の時間を計測するならtimeGetTimeを使うのが一般的ではないでしょうか?
「timeGetTime 関数」
http://msdn.microsoft.com/ja-jp/library/cc428795.aspx
「timeGetTime 関数」
http://msdn.microsoft.com/ja-jp/library/cc428795.aspx
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。