Mam's WebSite

Mamの覚書Q&A検索


大項目:「 Delphi 」 - 中項目:「 API 」

「 処理時間を計る 」

処理時間を計測するにはGetTickCount関数を使うことが多いのですが、もっと正確に処理時間を計測するには?
timeGetTime


回答

timeGetTimeを使うと分解能1msで計測することができます。
 
GetTickCount
分解能:約15ミリ秒
 
timeGetTime
分解能:最小で1ミリ秒
(分解能はtimeBeginPeriod関数で設定する)

ソース

-------------------------------------------------------------------
//GetTickCount APIを使用した例
var StartTime:Cardinal;
    i:integer;
begin
  StartTime:=GetTickCount;
  //何らかの処理
  for i := 0 to 999 do
    memo1.Lines.Add(Format('%3d',[i]));
  memo1.Lines.Add(inttostr(GetTickCount-StartTime)+'ミリ秒');
end;
-------------------------------------------------------------------
//timeGetTime APIを使用した例
uses Winapi.MMSystem;
 
var StartTime:Cardinal;
    i:integer;
begin
  timeBeginPeriod(1); //分解能を1msに設定
  StartTime:=timeGetTime;
  //何らかの処理
  for i := 0 to 999 do
    memo1.Lines.Add(Format('%3d',[i]));
  memo1.Lines.Add(inttostr(timeGetTime-StartTime)+'ミリ秒');
end;

Copyright 2019 Mam