C 표준 라이브러리에는 시간과 관련된 다양한 함수들이 포함되어 있으며, 그중 difftime()은 두 시간 값 사이의 차이를 계산하는 데 사용되는 함수입니다. 이번 글에서는 difftime()의 기본 개념, 사용 방법, 그리고 실제 동작 예제까지 자세히 살펴보겠습니다.
difftime() 함수란?
difftime() 함수는 두 개의 time_t 타입 시간 값을 인자로 받아, 두 시점 사이의 경과 시간을 초 단위로 반환합니다.
함수의 원형은 다음과 같습니다.
double difftime(time_t end, time_t beginning);
여기서 주의할 점은 인자의 순서입니다. 첫 번째 인자는 나중 시간(상한), 두 번째 인자는 먼저 측정한 시간(하한)이며, 함수는 두 인자 간의 차이를 double 형태로 반환합니다.
difftime() 사용 예제
아래 예제는 프로그램 시작 시점의 시간을 기록한 후, 5초 동안 카운트를 진행하고 종료 시점의 시간을 기록하여 두 시간의 차이를 출력합니다.
#include <time.h>
#include <stdio.h>
#include <unistd.h>
main() {
int sec;
time_t time1, time2;
// 시작 시간 기록
time(&time1);
printf("Current Time: %ld\n", time1);
// 5초 동안 카운트 진행
for (sec = 1; sec <= 5; sec++) {
sleep(1);
printf("Count: %d\n", sec);
}
// 종료 시간 기록
time(&time2);
printf("Ending Time: %ld\n", time2);
// 두 시간의 차이 출력
printf("Difference is %.2f seconds", difftime(time2, time1));
}실행 결과
Current Time: 1554918635 Count: 1 Count: 2 Count: 3 Count: 4 Count: 5 Ending Time: 1554918640 Difference is 5.00 seconds
코드 설명
- time(&time1): 현재 시각을 초 단위로 가져와 time1에 저장합니다.
- sleep(1): 1초씩 대기하며 총 5초가 경과하도록 합니다.
- time(&time2): 작업이 끝난 후의 시각을 time2에 저장합니다.
- difftime(time2, time1): 종료 시간에서 시작 시간을 빼 경과 시간인 5초를 계산합니다.
정리
difftime()은 실행 시간 측정, 타이머 구현, 성능 분석 등 다양한 상황에서 유용하게 활용될 수 있는 함수입니다. 반환값이 double 타입이므로 소수점 단위의 정밀한 출력도 가능하며, <time.h> 헤더 파일을 포함하기만 하면 별도의 설정 없이 바로 사용할 수 있습니다.