Embarcadero Delphi
Mesure des intervalles de temps
Recherche…
Utilisation de l'API Windows GetTickCount
La fonction GetTickCount
API Windows renvoie le nombre de millisecondes depuis le démarrage du système (ordinateur). L'exemple le plus simple est le suivant:
var
Start, Stop, ElapsedMilliseconds: cardinal;
begin
Start := GetTickCount;
// do something that requires measurement
Stop := GetTickCount;
ElapsedMillseconds := Stop - Start;
end;
Notez que GetTickCount
renvoie 32 bits DWORD
afin qu'il encapsule tous les 49,7 jours. Pour éviter l'encapsulation, vous pouvez utiliser GetTickCount64
(disponible depuis Windows Vista) ou des routines spéciales pour calculer la différence de GetTickCount64
:
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;
Quoi qu'il en soit, ces routines GetTickCount
des résultats incorrects si l'intervalle de deux appels suivants de GetTickCount
dépasse la limite de 49,7 jours.
Pour convertir des millisecondes en secondes exemple:
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;
Utilisation de l'enregistrement TStopwatch
Les versions récentes de Delphi sont livrées avec l'enregistrement TStopwatch qui sert à mesurer l'intervalle de temps. Exemple d'utilisation:
uses
System.Diagnostics;
var
StopWatch: TStopwatch;
ElapsedMillseconds: Int64;
begin
StopWatch := TStopwatch.StartNew;
// do something that requires measurement
ElapsedMillseconds := StopWatch.ElapsedMilliseconds;
end;