重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

C言語の質問です.
DWORD の timeGetTime();でプログラムの実行時間を測ったら0だったのに
CUT_SAFE_CALL(cutCreateTimer(&timer)); で取得すると時間が測れるってことありますか?
timeGetTime();で取得した方は同じプログラムをfor文で何度か繰り返せばようやく違う値が返ってきます.これはやはりおかしいのでしょうか?

A 回答 (2件)

timeGetTimeはm秒単位の時間が返りますが、その分解能は1m秒ではありません。


1m秒の違いを区別することができません。

http://msdn.microsoft.com/en-us/library/windows/ …
> The default precision of the timeGetTime function can be five milliseconds or more, depending on the machine.

http://msdn.microsoft.com/ja-jp/library/cc428795 …
> timeGetTime 関数の既定の精度は、マシンによっては 5 ミリ秒以上になる場合があります。


なので、極短時間の処理を測定すれば、前後で同じ値になる(=経過時間が0になる)場合があります。
また、たまたま値が変わる前後になって、分解能の時間になる場合もあります。

たとえば、5m秒だとすると
開始が 1m秒 終了が 4m秒 なら、それぞれtimeGetTime関数からは 0と0が返るので差が0m秒になります。
開始が 4m秒 終了が 7m秒 なら、それぞれtimeGetTime関数からは 0と5が返るので差が5m秒になります。
どちらも、実際の時間は3m秒で同じです。

CUT_SAFE_CALL(cutCreateTimer(&timer)) の方はわかりません。
CUDAには不案内なもので。
分解能が細かければ、測定できるかもしれません。
ですが、あなたの環境で、そもそもCUDAが使えるかどうか(グラフィックボードは対応しているのか?開発環境は整っているのか?)
    • good
    • 0
この回答へのお礼

for文でまわした限り精度は一応1msecみたいです.
このプログラム自体が短く0.1msec前後だったため測れたり測れなかったりしたみたいです.ありがとうございました.
(CUDAは使えるようにしています.)

お礼日時:2013/07/29 04:23

>timeGetTime();で取得した方は同じプログラムをfor文で何度か繰り返せばようやく違う値が返ってきます.これはやはりおかしいのでしょうか?



timeGetTime()の仕様は確認されていますか?
http://msdn.microsoft.com/ja-jp/library/cc428795 …
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!