C/C++언어

프로그램 시간 측정

중년 플머 김씨 2012. 3. 21. 13:07

아래 예는 윈도우에서 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