프로세스 시간 구하기.
Posted 2008/05/28 12:05, Filed under: 나의 길/간단한 코딩일반적으로 시간을 잴때에는
time 을 쓴다.
그런데 이건 초단위로 밖에 잴수가 없기 때문에 정밀하지가 않다.
1초, 2초 이런식으로밖에 모르기 때문이다.
그 다음 사용하는게
clock 을 쓴다
CPU 클럭을 토대로 만들어지는건데
보통
(double)(종료클럭 - 시작클럭)/CLOCKS_PER_SEC
를 이용해서 시간을 구한다.
그런데 어제 발생한 일이
무슨일인지 모르겠지만 시작클럭과 종료클럭이 같다.
즉 0으로 전혀 안 변하는거다.
그래서 다음에 찾아낸 방법이
times를 이용하는거다.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <sys/times.h>
void main()
{
struct tms stTimes;
clock_t start_t, end_t;
...
start_t = times(&stTimes);
...
...
end_t = times(&stTimes);
printf("Total Time [%2.2f]\n", (double)(end_t - start_t)/CLK_TCK);
}
원래 times 는 현재 프로세스가 수행한 시간을 구할때 이용하나
빼기 하면 수행한 시간이 나오는거지..
제대로 이용하는것인지는 모르겠지만.
clock 이 안 될때는 이용하면 괜찮을듯..
덧붙여서
리눅스에서는 CLK_TCK 값이 없다고 나온다
그냥
#define CLK_TCK CLOCKS_PER_SEC
로 선언했더니 결과값이 틀리다.
이런런
다시 구글에서 검색이다.
#include <unistd.h>
#define CLK_TCK sysconf(_SC_CLK_TCK)
이렇게 해준다.
Tag : times
Response :
0 Trackback
,
0 Comment
Trackback URL : http://simplelife.pe.kr/tc/trackback/545