• ベストアンサー

プログラムの実行時間

Cで書いたのプログラムの時間を測りたいのですが、 何か良い方法はありますか?? 調べたところclock関数というのがあるそうですが「処理系の最良の近似で返す」ってどうなんだろうと思って聞いてみました。 何が必要か良くわからないのですが、Windouws XPでコンパイラはBorland C++を使っています。

質問者が選んだベストアンサー

  • ベストアンサー
  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.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://www.emit.jp/prog/prog_t1.html
apple_cube
質問者

お礼

大丈夫なんですねっ! clock関数をも使うことが出来ました。 ありがとうございます(^_^)

すると、全ての回答が全文表示されます。

関連するQ&A