자신이 수행하는 루틴의 성능을 측정하는 방법으로 그 루틴이 수행된 시간을 획득 하는 방법이 있다.
Windows에서는 여러가지 시간측정 방법을 제시하는데, 여기서는 QueryPerformanceCounter를 알아보겠다.


QueryPerformanceCounter : 고성능의 카운터이다. LONGLONG 형의 64bit 인자를 가지며, 가장 낮은 단위의 시간측정을 지원한다. 하지만 일부 최신의 시스템(CPU 클럭이 2G이상이거나, AMD사의 듀얼 코어 이상의 제품)에서는 잘못된 값을 전달하기때문에 문제가 발생 할 수 있다.

사용방법

#include 

static 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));
} 

 

Posted by 꿍's
,