| [ 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 |