본문 바로가기
IT/programming

[C/C++] C++ 프로그램/함수 실행 시간 측정, ms 밀리초 기준

by 어느해겨울 2022. 1. 18.

C++ 프로그램/함수 실행 시간 측정

C++ 에서 사용할 수 있는 프로그램/함수 실행 간 시간 측정 방법을 공유한다.

chrono 를 이용하여 작성하였고 밀리초(ms) 단위로 측정하였다.

더 작은 단위가 필요하다면 duration_cast<> 의 인자를 원하는 단위로 변경하여 사용하면 된다.

 


소스코드

- 100ms 씩 10번을 sleep 하여 1000ms(1초) 에 근사한 측정치를 보여주는지 확인하자.

#include <stdio.h>
#include <unistd.h>

#include <chrono>

using namespace std;
using namespace chrono;


int main(int _argc, char *_argv[]) {
    system_clock::time_point t_time_begin, t_time_end;
    milliseconds t_diff_msec;

    // 측정 시작
    t_time_begin = system_clock::now();

    for( int idx = 0 ; idx < 10 ; idx++ ) {
        usleep(100000); // 100ms * 10
    }

    // 측정 종료
    t_time_end = system_clock::now();

    // 밀리초 단위 계산
    t_diff_msec = duration_cast<milliseconds>(t_time_end - t_time_begin) ;

    printf("time diff : %3d ms\n", (int)t_diff_msec.count());

    return 0;
}

 

컴파일 및 실행결과

- chrono는 c++11 이상에서 가능 하기 때문에 컴파일 시 옵션으로 -std=c++11 을 지정해야 한다.

muabow@muabow:~/dev/cpp_file$ g++ -o time_diff time_diff.cpp -std=c++11 ; ./time_diff
time diff : 1001 ms
muabow@muabow:~/dev/cpp_file$ ./time_diff
time diff : 1000 ms
muabow@muabow:~/dev/cpp_file$ ./time_diff
time diff : 1001 ms
muabow@muabow:~/dev/cpp_file$ ./time_diff
time diff : 1000 ms
muabow@muabow:~/dev/cpp_file$ ./time_diff
time diff : 1000 ms
muabow@muabow:~/dev/cpp_file$ ./time_diff
time diff : 1000 ms

결과는 1000ms 이거나 그에 근사한 결과가 출력되었다.

sleep 쉽게 얘기하면 cpu clock을 공회전 시켜 프로그램 실행을 지연 시키는 방식이라 환경과 시스템의 영향을 받는다.

정확하게 딱 떨어지는 수치를 얻지 못할 수도 있지만 사용하는데는 무리가 없다고 생각된다.

 

끝.

 

 

댓글