ページ 11

時間計測について

Posted: 2012年2月18日(土) 22:38
by kuro
とても基本的な質問だと思うのですが・・・

Windowsで、あるプログラムにおいて、<time.h>をインクルードして、

start = clock();

[計測したい処理]

end = clock();
double time = (double)(end-start)/CLOCK_PER_SEC;

として、時間の計測を行ったのですが、この場合のtimeの単位は[ms]なのでしょうか?それともなのでしょうか?

どなたかよろしくお願いいたします。

Re: 時間計測について

Posted: 2012年2月18日(土) 22:45
by みけCAT
おそらく秒だと思います。
参考:苦C
[search=google]clock C言語[/search]

Re: 時間計測について

Posted: 2012年2月18日(土) 22:50
by kuro
なるほど。ありがとうございます。

ということは、CLOCKS_PER_SECで割らなければ(/CLOCKS_PER_SECを削除すると)、[ms]が得られるということですか?

Re: 時間計測について

Posted: 2012年2月19日(日) 07:49
by beatle
clock()で得られる数値の単位は,規格的には決まっていなかったと思います.msecが妥当なので使っている処理系が多いだけだと思います.

CLOCK_PER_SECは,その名の通り「クロック/秒」ですから,
(double)(end-start)/CLOCK_PER_SEC
= [clock] / [clock / sec]
= [sec]
ということになります.

先にも書きましたが,clock()の単位が(規格的に)分からないため,CLOCK_PER_SECで割ることで,秒単位に直します.

Re: 時間計測について

Posted: 2012年2月19日(日) 08:40
by softya(ソフト屋)
Windowsにおいてms単位の時間を計測するならtimeGetTimeを使うのが一般的ではないでしょうか?
「timeGetTime 関数」
http://msdn.microsoft.com/ja-jp/library/cc428795.aspx