Embarcadero Delphi
시간 간격 측정
수색…
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