Embarcadero Delphi                
            Измерение временных интервалов
        
        
            
    Поиск…
Использование API Windows GetTickCount
 Функция GetTickCount Windows API возвращает количество миллисекунд с момента запуска системы (компьютера). Простейший пример: 
var
  Start, Stop, ElapsedMilliseconds: cardinal;
begin
  Start := GetTickCount;
  // do something that requires measurement
  Stop := GetTickCount;
  ElapsedMillseconds := Stop - Start;
end;
  Обратите внимание, что GetTickCount возвращает 32-разрядный DWORD поэтому он обертывает каждые 49.7 дней. Чтобы избежать обертывания, вы можете использовать GetTickCount64 (доступный с Windows Vista) или специальные процедуры для расчета разности 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;
  В любом случае эти процедуры возвращают неверные результаты, если интервал двух последующих вызовов GetTickCount превышает границу 49,7 дня. 
Чтобы преобразовать миллисекунды в несколько секунд:
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
Последние версии Delphi поставляются с записью TStopwatch, которая предназначена для измерения временных интервалов. Пример использования:
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
        Лицензировано согласно CC BY-SA 3.0
        Не связан с Stack Overflow