Embarcadero Delphi
Medición de intervalos de tiempo
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