電子書籍の厳選無料作品が豊富!

Cで書いたのプログラムの時間を測りたいのですが、
何か良い方法はありますか??

調べたところclock関数というのがあるそうですが「処理系の最良の近似で返す」ってどうなんだろうと思って聞いてみました。

何が必要か良くわからないのですが、Windouws XPでコンパイラはBorland C++を使っています。

A 回答 (1件)

★外部プログラムを測定したいのですか?


・それとも C で書いた処理ルーチンを測定したいのですか?
 どちらにしても clock 関数で簡単に測定できます。
 次のサイトを参考にして下さい。
 http://www9.plala.or.jp/sgwr-t/lib/clock.html→『プログラム実行開始からの経過時間(プロセッサ時間)を取得する』
 多分、上記のようなサイトを読んだのでしょうね。
・clock 関数は処理系によって測定できる分解能が異なるのです。
 処理系A では、1秒単位で測定できるが、
 処理系B では、1/1000秒単位で測定できる場合があります。
 『理系の最良の近似で返す』ってこの事だと思います。
・あと Windows API に GetTickCount() という関数がありますが、この関数は 1ミリ秒単位で
 Windows システムの起動経過時間を取得できます。この関数を利用すれば、C関数の clock
 よりも分解能が細かいため精度が良くなります。
 下のそのサンプルを載せます。

サンプル:
#include <stdio.h>
#include <windows.h>

int main( void )
{
 DWORD dwStart;
 DWORD dwStop;
 DWORD dwTime;
 
 dwStart = GetTickCount();
 /*
 処理ルーチン(測定したい関数など)
 */
 dwStop = GetTickCount();
 dwTime = dwStop - dwStart;
 
 printf( "計測時間は %d.%03d 秒でした。\n", (dwTime / 1000), (dwTime % 1000) );
 return( 0 );
}

その他:
・外部プログラムの測定は、上記の処理ルーチンに system 関数で外部プログラムを
 実行すればよいだけです。
  :
 dwStart = GetTickCount();
 system( "c:\program.exe" );
 dwStop = GetTickCount();
 dwTime = dwStop - dwStart;
  :
 とします。
・以上。参考に。

参考URL:http://www.sm.rim.or.jp/~shishido/tick.html,http …
    • good
    • 0
この回答へのお礼

大丈夫なんですねっ!
clock関数をも使うことが出来ました。

ありがとうございます(^_^)

お礼日時:2007/04/25 23:15

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