시간 측정이 필요할 때,
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가 저장됨.
'[old 정리중] study > Visual studio' 카테고리의 다른 글
(작성중....) Serial 통신 프로그램 작성 (0) | 2013.05.28 |
---|---|
~~~. obj에 이미 정의되어 있습니다. (0) | 2012.12.17 |
[MFC] 탭 순서 (Tab order) 보기/설정 (0) | 2012.09.16 |
기존의 file을 사용하여 Class 추가하기 (0) | 2012.09.13 |
thread 사용/시작/종료 (afxbeingthread 사용) (0) | 2012.09.13 |