Embarcadero Delphi
Tijdintervallen meting
Zoeken…
Met behulp van Windows API GetTickCount
De Windows API GetTickCount
functie retourneert het aantal milliseconden sinds het systeem (computer) is gestart. Het eenvoudigste voorbeeld volgt:
var
Start, Stop, ElapsedMilliseconds: cardinal;
begin
Start := GetTickCount;
// do something that requires measurement
Stop := GetTickCount;
ElapsedMillseconds := Stop - Start;
end;
Houd er rekening mee dat GetTickCount
32-bits DWORD
retourneert, zodat deze elke 49,7 dagen wordt verpakt. Om inpakken te voorkomen, kunt u GetTickCount64
(beschikbaar sinds Windows Vista) of speciale routines gebruiken om het tekenverschil te berekenen:
function TickDiff(StartTick, EndTick: DWORD): DWORD;
begin
if EndTick >= StartTick
then Result := EndTick - StartTick
else Result := High(NativeUInt) - StartTick + EndTick;
end;
function TicksSince(Tick: DWORD): DWORD;
begin
Result := TickDiff(Tick, GetTickCount);
end;
In ieder geval zullen deze routines onjuiste resultaten retourneren als het interval van twee opeenvolgende oproepen van GetTickCount
de grens van 49,7 dagen overschrijdt.
Voorbeeld van milliseconden naar seconden converteren:
var
Start, Stop, ElapsedMilliseconds: cardinal;
begin
Start := GetTickCount;
sleep(4000); // sleep for 4 seconds
Stop := GetTickCount;
ElapsedMillseconds := Stop - Start;
ShowMessage('Total Seconds: '
+IntToStr(round(ElapsedMilliseconds/SysUtils.MSecsPerSec))); // 4 seconds
end;
TStopwatch-record gebruiken
Recente versies van Delphi worden geleverd met het TStopwatch- record dat bedoeld is voor tijdsintervalmeting. Voorbeeld gebruik:
uses
System.Diagnostics;
var
StopWatch: TStopwatch;
ElapsedMillseconds: Int64;
begin
StopWatch := TStopwatch.StartNew;
// do something that requires measurement
ElapsedMillseconds := StopWatch.ElapsedMilliseconds;
end;