[팁] 정밀한 타이머 - QueryPerformanceFrequency

Binceline 2014. 2. 3. 02:35

출처 : http://shinewithme.tistory.com/347


----------------TEST loop--------------------

   LARGE_INTEGER timefeq,start,end;
   float tinterval;

   QueryPerformanceFrequency(&timefeq);
   QueryPerformanceCounter(&start);
    
 //  Sleep(3); // 테스트로 주어본 delay : 3/1000 초

 //  작업


   QueryPerformanceCounter(&end);

   tinterval = (float)(end.QuadPart-start.QuadPart)/timefeq.QuadPart;


----------------------------------------------


cpu 속도와는 관계없는 timer의 초당 counter값.
cpu와는 별도로 정밀한 시간단위를 얻을 수 있도록 system에 설치되어 있는 고성능 timer(counter).
QueryPerformanceFrequency()는 그 주파수(초당 진동수)를 알아내는 함수이다.


(end-start)/timefeq 의 결과값이 '작업' 동작의 걸리는시간!!

단위는 초. x1000 하면 ms (밀리세컨드), x1,000,000 을 곱하면 us(마이크로세컨드).





더이상의 정확한 시간단위를 얻을수 없음. QueryPerformanceCounter, QueryPerformanceFrequency이 제일 정확. 

반응형