수색…


Windows API GetTickCount 사용

Windows API GetTickCount 함수는 시스템 (컴퓨터)이 시작된 이후의 시간 (밀리 초)을 반환합니다. 가장 간단한 예제는 다음과 같습니다.

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부터 사용 가능) 또는 특수 루틴을 사용하여 틱 차이를 계산할 수 있습니다.

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