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을 공회전 시켜 프로그램 실행을 지연 시키는 방식이라 환경과 시스템의 영향을 받는다.
정확하게 딱 떨어지는 수치를 얻지 못할 수도 있지만 사용하는데는 무리가 없다고 생각된다.
끝.
'IT > programming' 카테고리의 다른 글
[C/C++] C언어 mmap, msync, munmap 설명 (4) | 2022.01.19 |
---|---|
[C/C++] C언어 프로그램/함수 실행 시간 측정, us 마이크로초 기준 (4) | 2022.01.18 |
[JAVA] 클래스와 메서드 설명 (0) | 2022.01.18 |
[C/C++] C++ JSON parser example, C언어 JSON 파서 예제, rapidjson (2) | 2022.01.17 |
Rest API 요청 언어별 정리, CURL/PHP/PYTHON/C/C++/QT/JAVA/Node.js (6) | 2022.01.17 |
댓글