処理時間の計測方法

解決


リュウ  2004-09-17 02:10:46  No: 10946

プロシージャ単位、もしくは処理の一塊で、どのくらい処理時間がかかっているか
計測をしたいと思っています。処理時間を計測するコンポーネントとかあるのでしょうか?
時間についてのコンポーネントでTimerを調べたのですが、時間をあらかじめ設定しコンポーネント等を起動させるものとヘルプに載っていたので計測するとはまた違うと思いました。

例えば以下のFor文の開始と終了までの処理時間を調べたい場合

//開始----------------
For i:=0 to 10 do    ↑
begin
 A:=1;                この区間の時間を計測したい
end;                  ↓
//終了----------------


WIZ  2004-09-17 02:28:48  No: 10947

どの程度の精度で時間の測定が必要でしょうか?
秒単位でいいなら、開始と終了の場所にwrite(DateTimeToStr(Now))を埋め込むだけで、表示を見て自分で引き算すればOKです。


ウォレス  2004-09-17 02:38:05  No: 10948

t1,t2:Longint;

  t1 := GetTickCount;
  for i := 0 to ..........  
  begin
     :
     :
  end;
  t2 := GetTickCount;

  Memo1.Lines.add(FloattoStr((t2-t1)/1000)+'s');

こんな感じでどうでしょ?


通りすがり  2004-09-17 02:42:26  No: 10949

var 
  start,fin,freq : int64;
begin
  QueryPerformanceCounter(start);

  for i := 0 to ..........  
  begin
     :
     :
  end;

  QueryPerformanceCounter(fin);
  QueryPerformanceFrequency(freq);
  InputBox('','',FloatToStr(((fin - start)*1000)/freq));
end;
とか、、、CPUによって使えませんが、、


通りすがり  2004-09-17 02:49:43  No: 10950

忘れてた。↑のは単位:ミリ秒


sadoyama  URL  2004-09-17 03:08:17  No: 10951

Delphi4 以降であれば、拙作のものがお役に立てるかもしれません。
http://www.sadoyama.pro.nu/htm/programing.htm

これも QueryPerformanceCounter() を使っています。

通りすがりさん Wrote
> CPUによって使えませんが

そういう説を聞いたことがあります。
MSDN にもそのような記述があります。
しかし、マルチCPU 以外においては問題ないと判断しています。


Mr.XRAY  URL  2004-09-17 03:10:46  No: 10952

コンポーネントでもよければ,

http://www003.upp.so-net.ne.jp/sadoyama/htm/compo/stopwatch.htm

なのもあります.


リュウ  2004-09-17 03:14:17  No: 10953

ありがとうございます。上手く計測できました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加