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