이 글에서는 C++의 difftime() 함수가 무엇인지 살펴보고, 기본 문법과 동작 원리, 그리고 반환값까지 자세히 알아보겠습니다.
difftime() 함수는 C++에서 기본으로 제공되는 내장 함수로, <ctime>(C 스타일에서는 <time.h>) 헤더 파일에 정의되어 있습니다. 이 함수는 time_t 타입의 매개변수 두 개를 받아서 두 시점 사이의 차이를 계산하는 역할을 합니다.
문법(Syntax)
double difftime(time_t end, time_t beginning);
첫 번째 인자는 나중 시점(end), 두 번째 인자는 먼저 시점(beginning)을 의미하며, 순서가 바뀌면 결과값의 부호가 반대로 나올 수 있으니 주의해야 합니다.
반환값(Return Value)
두 시간의 차이를 초 단위로 계산하여 double 데이터 타입으로 반환합니다.
예제 1: 올해 새해 이후 경과된 시간 계산하기
아래 예제는 현재 시각에서 올해 1월 1일 0시 0분 0초까지의 경과 시간(초)을 계산하는 코드입니다.
#include <stdio.h>
#include <time.h>
int main () {
time_t now;
struct tm newyear;
double seconds;
time(&now); /* 현재 시간 가져오기 */
newyear = *localtime(&now);
newyear.tm_hour = 0; newyear.tm_min = 0; newyear.tm_sec = 0;
newyear.tm_mon = 0; newyear.tm_mday = 1;
seconds = difftime(now, mktime(&newyear));
printf ("%.f seconds since new year in the current timezone.\n", seconds);
return 0;
}실행 결과
위 코드를 실행하면 다음과 같은 출력이 생성됩니다.
3351041 seconds since new year in the current timezone.
예제 2: 프로그램 실행 시간 측정하기
difftime()은 코드 블록의 실행 시간을 측정할 때도 유용하게 사용됩니다. 아래 예제는 반복문 작업의 소요 시간을 측정하는 코드입니다.
#include <iostream>
#include <ctime>
using namespace std;
int main() {
time_t start, ending;
long addition;
time(&start);
for (int i = 0; i < 50000; i++) {
for (int j = 0; j < 50000; j++);
}
for (int i = 0; i < 50000; i++) {
for (int j = 0; j < 50000; j++);
}
for (int i = 0; i < 50000; i++) {
for (int j = 0; j < 50000; j++);
}
time(&ending);
cout << "Total time required = " << difftime(ending, start) << " seconds " << endl;
return 0;
}실행 결과
위 코드를 실행하면 다음과 같은 출력이 생성됩니다.
Total time required = 37 seconds
정리
difftime() 함수는 두 time_t 시점 간의 차이를 초 단위의 double 값으로 손쉽게 계산해 주는 표준 라이브러리 함수입니다. 특정 날짜까지의 경과 시간 확인이나 코드 성능 측정 등 다양한 상황에서 활용할 수 있으며, 사용법도 간단하기 때문에 C++ 시간 관련 프로그래밍의 기본 도구로 자주 사용됩니다.