CnUnix

[알림판목록 I] [알림판목록 II] [글목록][이 전][다 음]
[ CnUnix ] in KIDS
글 쓴 이(By): baegae (Sung-Jin)
날 짜 (Date): 1995년09월20일(수) 08시09분25초 KDT
제 목(Title): time() & gettimeofday()




유닉스에서는 UTC, 즉 1970년 1월 1일 0시 0분 0초부터의 시간을 기록하고
있습니다. 이 값을 얻을 수 있는 syscall이 time()과 gettimeofday()인데,
time()은 초단위의 값을 리턴하고, gettimeofday()는 microsecond까지의
단위로 리턴합니다.

time()은 본래 제공되고, BSD쪽에서 gettimeofday()를 제공합니다.
SVR4 이상에서도 역시 gettimeofday()를 제공하고요.
사용하는 방법은 간단한데,

 time_t t1,t2;
 time(&t1)
 ......
 time(&t2)

이 후에 t2-t1이 가운데 걸린 실제시간(real time)을 초단위로 나타낸 값이
됩니다. time_t는 보통 long입니다.

마찬가지로

 struct timeval t1,t2;
 gettimeofday(&t1);
 ......
 gettimeofday(&t2);

한 후에 t1.tv_sec-t2.tv_sec + (t1.tv_usec-t2.tv_usec)/1000000 하면
microsecond 단위로 소요시간을 알 수 있죠.

재미있는 것은 time_t가 long이고, long이 보통 4byte이니까,
UTC 이후의 시간을 초단위로 계산하면 UNIX 시간의 한계가 계산되죠.
불과 몇년 남지 않았습니다.
그래서 최근에 이를 더 늘리려고 한다고 하죠...

또 위의 둘은 실제시간을 측정하는데, cpu의 수행시간을 측정하고 싶은
경우도 종종 있습니다. 이 경우 user cpu time과 system cpu time으로
나누어 얻을 수 있는 것이 getrusage()입니다. getrusage() 역시 BSD쪽에서
제공한 것으로 SVR3 이하에서는 없고 SVR4 이상에서는 제공됩니다.


--
Sung-Jin Chun
Computer Development Lab.
Samsung Electronics Co., Ltd., Seoul, Korea

E-mail  : sjchun@janus.sst.co.kr
Phone   : +82-2-559-4668
[알림판목록 I] [알림판목록 II] [글 목록][이 전][다 음]
키 즈 는 열 린 사 람 들 의 모 임 입 니 다.