아래 예는 윈도우에서 high resolution timer를 이용하여 0.5초를 측정하는 예입니다.
high resolution timer는 나노초 단위까지의 매우 정밀한 시간 측정이 가능합니다.


#include <stdio.h>
#include <windows.h>
main()

 LARGE_INTEGER ticksPerSecond;
 LARGE_INTEGER start_ticks, end_ticks, diff_ticks;  

//시작 하면서 시간 측정
 QueryPerformanceCounter(&start_ticks);
 
//여기서 원래 메인 루프를 돌림

    Sleep(500);    /*  500/1000=0.5 sec  */

 //처리가 끝난뒤의 시간 측정
 QueryPerformanceCounter(&end_ticks);

//cpu 클럭당 경과 시간?   
 QueryPerformanceFrequency(&ticksPerSecond);
 printf ("ticksPerSecond: %I64Ld\n",ticksPerSecond.QuadPart);

//시작했을때 Tick 이랑 끝났을때 tick의 차를 구함
 diff_ticks.QuadPart = end_ticks.QuadPart- start_ticks.QuadPart;
 printf ("ticks: %I64Ld\n",diff_ticks.QuadPart);

//알아보기 힘드니 초로 환산한다.
 printf("Elapsed CPU time:   %.12f  sec\n\n",
  ((double)diff_ticks.QuadPart/(double)ticksPerSecond.QuadPart));
}


출처
http://www.unb.ca/metrics/software/HRtime.html

'C/C++언어' 카테고리의 다른 글

CAtlMap 사용법 정리  (0) 2012.08.25
MSXML 파싱  (0) 2012.07.03
버츄얼과 오버라이드 차이 Virtual? Override?  (0) 2012.03.06
Predefined Macros  (0) 2012.01.05
[C/C++] Debug Printf  (0) 2012.01.03

+ Recent posts