반응형
Var
StartTick,Freq,EndTick : int64;
begin
QueryPerformanceCounter(StartTick); // Windows 에 선언된 kernel32.dll API
QueryPerformanceFrequency(Freq);
{ 측정할 코드.. }
QueryPerformanceCounter(EndTick);
Showmessage(Formatfloat('0.000000',(EndTick-StartTick)/Freq)+'초 소요됨');
end;
이
방법을 사용하여 16밀리초 미만의 시간도 잡아낼 수 있습니다. CPU의 성능 카운터값을 호출해오는 것으로 알고 있습니다.
MSDN에 따르면 윈도95 / NT3.1부터 포함되어 있다고 합니다. 화면갱신시 fps 계산시에도 이 값을 역수로 만들면 현순간
기준 fps를 계산 가능합니다. 저는 실제 코딩에서는 Freq값이 변하지 않기에 프로시저가 아닌 함수로 포장해서 사용하는데 여러분
손에 익은 대로 사용하시기 바랍니다.
단점이 없는 것은 아닙니다. 거의 모든 시스템에서 이 코드가 정상작동하지만, 극소수의 퍼포먼스카운터 API를 미지원하는 시스템에서는 QueryPerformanceCounter 값이 0으로 잡힌다고 합니다. 필요한 경우 0으로 나누는 등의 문제를 막기 위해 failsafe한 안전망을 설치해두시는 편이 좋겠습니다.
반응형