Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++ difftime() 함수 완벽 정리: 문법, 동작 원리와 활용 예제

이 글에서는 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++ 시간 관련 프로그래밍의 기본 도구로 자주 사용됩니다.