CS/자료구조, 알고리즘

[C++] 프로그램 실행시간 측정 프로그램 (feat. 빅오표기법)

양양줘 2025. 3. 17. 18:36

 

clock()함수로 프로그램 실행 시간을 측정할 수 있다.
이 함수는 호출되었을 때의 시스템 시각을 CLOCKS_PER_SEC단위로 반환하며 반환형은 clock_t형이다.

#include <cstdio>
#include <cstdlib>
#include <ctime>

void main() {
    clock_t start, finish;
    double duration;
    start = clock();

    // 실행 코드 ...
    // 화면 출력문 제외하기

    finish = clock();
    duration = (double)(finish - start) / CLOCKS_PER_SEC;
    printf("%f초 걸렸습니다.", duration);

}

 
이 코드로 알고리즘의 효율성을 판단할 수 있을 것이라고 생각하면 오산이다.
괜히 빅오표기법이 있는게 아니다.
 
위 코드의 문제점
1. 비교할 두 알고리즘을 반드시 구현 완료해야한다.
2. 비교할  두 알고리즘을 반드시 동일한 조건의 하드웨어를 사용하여 실행 시간을 측정하여야 한다.
    (컴퓨터 하드웨서 성능 버스 타버림)
3. 사용 소프트웨어 환경도 동일해야 한다. 
     파이썬같은 인터프리터랑 컴파일형식을 같이 하면 당근 컴파일이 빠름
4. 성능 실험시에 했던 데이터말고 다른 데이터를 넣으면 또 결과가 달라질 수 있어서 실험되지 않은 입력에 대해서는 동일한 실행시간을 보장할 수 없다.
 
자 ! 그럼 빅오표기법 계산하는 습관을 들이자!!!