Programming/C++ With MFC
Windows Programming : 성능측정 방법
꿍's
2009. 3. 13. 00:58
자신이 수행하는 루틴의 성능을 측정하는 방법으로 그 루틴이 수행된 시간을 획득 하는 방법이 있다.
Windows에서는 여러가지 시간측정 방법을 제시하는데, 여기서는 QueryPerformanceCounter를 알아보겠다.
QueryPerformanceCounter : 고성능의 카운터이다. LONGLONG 형의 64bit 인자를 가지며, 가장 낮은 단위의 시간측정을 지원한다. 하지만 일부 최신의 시스템(CPU 클럭이 2G이상이거나, AMD사의 듀얼 코어 이상의 제품)에서는 잘못된 값을 전달하기때문에 문제가 발생 할 수 있다.
사용방법
#includestatic LARGE_INTEGER initial; static LARGE_INTEGER freq; void Start() { QueryPerformanceCounter(&initial); } void Performance() { LARGE_INTEGER counter; double StartQuerytime; double EndQuerytime; QueryPerformanceCounter(&counter); QueryPerformanceFrequency(&freq); StartQuerytime = ((double)(counter.QuadPart-initial.QuadPart)) / ((double)freq.QuadPart); 측정함수(); QueryPerformanceCounter(&counter); QueryPerformanceFrequency(&freq); EndQuerytime = ((double)(counter.QuadPart-initial.QuadPart)) / ((double)freq.QuadPart); printf("%d", (unsigned int)((EndQuerytime-StartQuerytime)*1000)); }