급히 질문있어요. 시간함수 CPU time에 대하여..

익명 사용자의 이미지

이 함수가 급히 필요한데 이상하게 man page에도.. A book on C 에두..
kldp.org의 문서에두... 없네요.. (제가 못찾는 것인가..?)
아무튼..
제가 원하는것은 시간을 측정하려고 하는데.. 걸린시간을..
그런데 이게 실제시간 1초 단위로만 측정이 되거든요.
1/100 초라던가.. 1/10000초단위.. 또는 1/1000000...
뭐 그렇게 측정을 하려고 하는데..
그럴려면 CPU time을 측정해야 할꺼 같은데..
도대체 함수를 알 수가 없어요.
제발 아시는분 있으시면 가르쳐 주세요~~~~~~~~
급히 필요해요..

익명 사용자의 이미지

#include

clock_t start, end;
double cpu_time_used;

start = clock();
end = clock();
cpu_time_used = ((double) (end - start)) / CLOCKS_PER_SEC;

이렇게 해보세요..~~~~

익명 사용자의 이미지


gettimeofday()를 사용하십시요..

1/1000000 단위 까지 알수 있습니다.

side의 이미지

#include <time.h>

clock_t start, end; 
double cpu_time_used; 

start = clock(); 
end = clock(); 
cpu_time_used = ((double) (end - start)) / CLOCKS_PER_SEC; 

여기서 cpu_time_used는 소숫점의 초단위 인가요?

datamind의 이미지

man clock 하면, 아래와 같이 나옵니다.
The clock() function returns an approximation of processor time used by the program.

이것은,, clock 은 CPU 의 tick 카운트를 알려주는데,
요즘 사용하는 CPU 가 300MHz 라면,
초당 300,000,000 의 tick 이 발생을 하겠죠,,
구런데, long 에 저장할수 있는 크기가 4,294,967,295 이므로,
약 14.3 초가 지나면, long 변수는 Overflow 가되어 Reset 됩니다.
즉, 약 14.3초 보다 오래걸리는 시간차이는 측정이 불가능하겠죠.. -_-;
구러므로, gettimeofday 를 사용하세요..