Embarcadero Delphi
Zeitintervallmessung
Suche…
Verwenden der Windows-API GetTickCount
Die Windows-API-Funktion GetTickCount
gibt die Anzahl der Millisekunden zurück, seit das System (Computer) gestartet wurde. Das einfachste Beispiel lautet:
var
Start, Stop, ElapsedMilliseconds: cardinal;
begin
Start := GetTickCount;
// do something that requires measurement
Stop := GetTickCount;
ElapsedMillseconds := Stop - Start;
end;
Beachten Sie, dass GetTickCount
32-Bit- DWORD
- DWORD
sodass alle 49,7 Tage DWORD
werden. Um das Wrapping zu vermeiden, können Sie entweder GetTickCount64
(verfügbar seit Windows Vista) oder spezielle Routinen zur Berechnung der Tick-Differenz verwenden:
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;
Auf GetTickCount
diese Routinen falsche Ergebnisse, wenn das Intervall von zwei GetTickCount
Aufrufen von GetTickCount
die 49,7-Tage-Grenze überschreitet.
So konvertieren Sie Millisekunden in Sekunden:
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-Datensatz verwenden
Aktuelle Versionen von Delphi werden mit dem TStopwatch- Datensatz geliefert , der für die Zeitintervallmessung dient. Verwendungsbeispiel:
uses
System.Diagnostics;
var
StopWatch: TStopwatch;
ElapsedMillseconds: Int64;
begin
StopWatch := TStopwatch.StartNew;
// do something that requires measurement
ElapsedMillseconds := StopWatch.ElapsedMilliseconds;
end;