시간 측정이 필요할 때,

timegettime , GetTickCount , rdtsc 등 보다는 QueryPerformanceCounter 의 사용을 권장한다.

물론 주의 사항도 있다.

참고 : http://sweeper.egloos.com/2820035

 

사용법은 아래와 같다.

 

 

1. 변수정의

 LARGE_INTEGER m_CPUFreq; //freq. (초당 clock 수)

 LARGE_INTEGER m_CPUClock1; // 시작 count

 LARGE_INTEGER m_CPUClock2; // 종료 count

 double m_SecInterval; // m_CPUClock1~2 사이의 시간 간격, 단위 sec

 

 

2. 시간 측정

// 현재 cpu의 freq. 를 측정하고

// 시간을 측정하고자 하는 두구간의 clock 을 측정한 후

//clock 차이를 freq. 로 나누어 준다.

 

if(QueryPerformanceFrequency(&m_CPUFreq)) //CPU Freq. 측정

{

    QueryPerformanceCounter(&m_CPUClock1); // 첫번째 count 측정

}

.

.

.

 QueryPerformanceCounter(&m_CPUClock2); // 두번째 count 측정

 

 m_SecInterval =  (double) ( m_CPUClock2.QuadPart

  - m_CPUClock1.QuadPart ) /m_CPUFreq.QuadPart;   // 시간 계산

 

 

 

// 참고 //////////////////////////

// LARGE_INTEGER temp;

//

// QueryPerformanceFrequency(&temp)

// 반환값 : 해당 PC가 QueryPerformanceCount 를 지원할 때 TRUE (아니면 FALSE)

// 결과 : temp.lpFrequency -> 초당 clock 수가 저장됨.

//

// QueryPerformanceCounter(&temp)

// 결과 : temp.QuadPart -> 현재 CPU count가 저장됨.

 

 

+ Recent posts