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;


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow