「処理時間を計る」
処理時間を計測するには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;