시간 측정이 필요할 때,
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가 저장됨.