티스토리 뷰
프로그래밍을 하다보면 시간을 측정하고 현재 시간을 출력해야 하는 상황이 종종 존재합니다.
이번에는 그러한 상황에 쓰일 수 있는 함수들을 알아보도록 하겠습니다.
먼저 이번 글에서는 수행시간을 측정하는 방법을 사용해보도록 하겠습니다.
먼저 실행 시간을 측정하는 방법은 아래와 같이 두 가지 방법이 존재합니다.
1. time() 이용
time() 함수를 이용하게 되면 Unix 운영체제가 공식 출시한 1970년 01월 01일 0시 0분 0초를 기점으로 현재까지 흐른 시간을 초(s) 단위로 나타냅니다.
#include<time.h> 헤더파일을 포함시키고 다음과 같이 사용합니다.
#include <stdio.h>
#include <time.h>
int main() {
time_t start, end;
double result;
start = time(NULL); // time(NULL)을 통해서 현재 시간 반환
//수행시킬 코드
end = time(NULL);
result = (double)(end-start);
cout << "수행 시간 : " << result << "second" << "\n";
return 0;
}
time() 함수를 이용한 방법은 초(s) 단위로 측정됩니다.
1. clock() 이용
clock() 방법을 이용하게 되면 time() 함수로는 구하지 못한 ms(millisecond) 단위로 시간 측정이 가능합니다.
해당 방법 역시 time() 과 마찬가지로 #include 헤더파일을 포함시켜 줍니다.
#include <stdio.h>
#include <time.h>
int main() {
clock_t start, end;
double result;
start = clock(); // 현재 시간 반환
//수행시킬 코드
end = clock();
result = (double)(end-start);
cout << "수행 시간 : " << result << "millisecond" << "\n";
/*
millisecond가 아니라 second로 출력하고 싶다면 "CLOCKS_PER_SEC"를 이용해주면 된다.
cout << "수행 시간 : " << ((result) / CLOCKS_PER_SEC) << "second" << "\n";
*/
return 0;
}
해당 방법에서는 ms단위로 나오기 때문에 초(s) 로 나타내고자 한다면 CLOCKS_PER_SEC 로 나누어 주면 됩니다.
참고자료 : https://eehoeskrap.tistory.com/261
참고자료 : https://zoosso.tistory.com/792
참고자료 : https://coding-factory.tistory.com/668
+) ms단위보다 조금 더 세밀한 단위로 측정하고 싶다면 chrono 라이브러리를 이용하면 됩니다.
chrono를 이용하여 측정하게 되면 milliseconds 뿐 아니라 microseconds, nanoseconds도 측정이 가능합니다.
chrono를 사용하기위해서는 #include <chrono> 를 사용해 헤더파일을 추가해주어야 합니다.
#include <chrono>
#include <iostream>
using namespace std;
using namespace chrono;
int main()
{
system_clock::time_point start_time = system_clock::now(); // 코드 시작 시간
/* 수행시키고자 하는 코드 */
system_clock::time_point end_time = system_clock::now(); //코드 종료 시간
/* 시간 계산 (종료 - 시작) */
nanoseconds nano = end_time - start_time;
microseconds micro = duration_cast<microseconds>(end_time - start_time);
milliseconds mill = duration_cast<milliseconds>(end_time - start_time);
seconds sec = duration_cast<seconds>(end_time - start_time);
minutes min = duration_cast<minutes>(end_time - start_time);
hours hour = duration_cast<hours>(end_time - start_time);
/* 결과 출력 */
cout << "걸린 시간 : " << nano.count() << " nanoseconds" << endl;
cout << "걸린 시간 : " << micro.count() << " microseconds" << endl;
cout << "걸린 시간 : " << mill.count() << " milliseconds" << endl;
cout << "걸린 시간 : " << sec.count() << " seconds" << endl;
cout << "걸린 시간 : " << min.count() << " minutes" <<endl;
cout << "걸린 시간 : " << hour.count() << " hour" << endl;
return 0;
}
결과 화면에서 보이는 것처럼 chrono를 이용하게 되면 속도가 매우 빨라 s 단위에서는 측정하지 못했던 동작들의 수행시간들도 측정이 가능해집니다.
참고자료 : https://jacking.tistory.com/988
'C++' 카테고리의 다른 글
[c++] 시간 측정하기 (2) - 현재시간 측정 (0) | 2021.07.14 |
---|