네이버에서 이동 : http://blog.naver.com/tinywolf/40036278850
함수나 기타 루틴의 수행시간을 측정해야 할 때가 있다.
그럴 때 사용할 수 있는 시간 측정 함수이다.
사용법은 아래와 같다.
performance에 현재 시간과 이전 시간의 차이를 담고
다시 time에 현재 측정된 시간을 담아준다.
단위는 소수점 이하 자리를 가지는 초 단위이며, define에 따라 서로 다른 타이머를 사용한다.
CHECK_CLOCK은 프로세스 수행 clock을 사용한다. 가장 단순하며 프로세스가 시작한 이후로 부터의 시간이 담기는 장점이 있다.
CHECK_TICKCOUNT는 윈도우즈의 GetTickCount 함수를 사용하며 단순하고 정확도가 떨어지는 타이머이다. 20ms정도의 오차가 있을 수 있다.
CHECK_MMEDIA는 윈도우즈의 멀티미디어 타이머를 사용하며 좀 더 정확하지만 winmm.lib라는 라이브러리를 컴파일 옵션의 Link에 추가해야 한다.
CHECK_PERFORMANCE는 하드웨어의 하이 퍼포먼스 타이머를 사용하여 가장 정확하다(나노 세컨드 단위까지 측정). 하지만 시간을 측정하는 4가지 방법 중 부하가 가장 크며, 하드웨어가 지원하지 않을 경우 GetTickCount 함수와 동일한 결과를 발생한다.
함수나 기타 루틴의 수행시간을 측정해야 할 때가 있다.
그럴 때 사용할 수 있는 시간 측정 함수이다.
사용법은 아래와 같다.
//#define CHECK_CLOCK
//#define CHECK_TICKCOUNT
//#define CHECK_MMEDIA
#define CHECK_PERFORMANCE
// 옵션중에 하나만 사용한다.
#include "chk_time.h"
double time;
double performance;
int test_array[100][100] = { 0 };
// 최초 호출시에는 performance가 의미 없다.
CheckPerformTime(performance, time);
for (int i = 0; i < 1000; i++)
for (int j = 0; j < 100; j++)
for (int k = 0; k < 100; k++)
test_array[j][k] = i * (j + k);
// 호출할 때마다 그 사이의 시간 간격을 performance에 담아서 알려준다.time에 이전에 측정된 시간을 넣어주면
CheckPerformTime(performance, time);
performance에 현재 시간과 이전 시간의 차이를 담고
다시 time에 현재 측정된 시간을 담아준다.
단위는 소수점 이하 자리를 가지는 초 단위이며, define에 따라 서로 다른 타이머를 사용한다.
CHECK_CLOCK은 프로세스 수행 clock을 사용한다. 가장 단순하며 프로세스가 시작한 이후로 부터의 시간이 담기는 장점이 있다.
CHECK_TICKCOUNT는 윈도우즈의 GetTickCount 함수를 사용하며 단순하고 정확도가 떨어지는 타이머이다. 20ms정도의 오차가 있을 수 있다.
CHECK_MMEDIA는 윈도우즈의 멀티미디어 타이머를 사용하며 좀 더 정확하지만 winmm.lib라는 라이브러리를 컴파일 옵션의 Link에 추가해야 한다.
CHECK_PERFORMANCE는 하드웨어의 하이 퍼포먼스 타이머를 사용하여 가장 정확하다(나노 세컨드 단위까지 측정). 하지만 시간을 측정하는 4가지 방법 중 부하가 가장 크며, 하드웨어가 지원하지 않을 경우 GetTickCount 함수와 동일한 결과를 발생한다.
전체 코드 보기
'스킬북 > 코드 조각' 카테고리의 다른 글
| 파일 선택 대화상자 띄우기 (0) | 2007/04/07 |
|---|---|
| 폴더 선택 대화상자 띄우기 (0) | 2007/04/07 |
| 로그 파일 기록하기.. (0) | 2007/04/07 |
| 수행 시간 측정하기.. (0) | 2007/04/07 |


|꼬마늑대|


댓글을 달아 주세요