Buscar..


Usando la API de Windows GetTickCount

La función GetTickCount API de Windows devuelve el número de milisegundos desde que se inició el sistema (computadora). El ejemplo más simple sigue:

var
  Start, Stop, ElapsedMilliseconds: cardinal;
begin
  Start := GetTickCount;
  // do something that requires measurement
  Stop := GetTickCount;
  ElapsedMillseconds := Stop - Start;
end;

Tenga en cuenta que GetTickCount devuelve DWORD 32 bits por lo que se ajusta cada 49.7 días. Para evitar el GetTickCount64 , puede usar GetTickCount64 (disponible desde Windows Vista) o rutinas especiales para calcular la diferencia de ticks:

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;

De todos modos, estas rutinas devolverán resultados incorrectos si el intervalo de dos llamadas subsiguientes de GetTickCount excede el límite de 49.7 días.

Para convertir milisegundos a segundos ejemplo:

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;

Usando el registro de TStopwatch

Las versiones recientes de Delphi se envían con el registro TStopwatch que es para la medición del intervalo de tiempo. Ejemplo de uso:

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
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow