반응형
Header: <ctime>
clock_t clock(void);
: clock() 함수는 프로그램의 실행 시작으로부터 경과된 시간을 clock ticks 수로 반환합니다.
단위는 clock tick이지만 ms와 동일합니다. 즉 ms단위를 정수형으로 반환합니다.
ctime에 정의되어있는 CLOCKS_PER_SEC과 같이 사용하면 sec(초) 단위로 출력할 수 있습니다.
더 정밀하게 측정하고 싶다면 chrono 라이브러리를 참고하세요.
Preview)
// 측정 시작 위치
clock_t startTime = clock();
/*
측정할 코드
*/
// 측정 종료 위치
clock_t endTime = clock();
// 측정 시간 계산 (ms단위)
clock_t elapsed = endTime - startTime;
// Second로 변환
double timeInSecond = (double)(elapsed / CLOCKS_PER_SEC);
Example)
#include <iostream>
#include <ctime> /* clock_t, clock, CLOCKS_PER_SEC */
#include <vector>
using std::cout;
using std::string;
using std::vector;
int main(void)
{
vector<string> vec(100000, "bonjour");
vector<string> tmp;
// 시작 시간
clock_t startTime = clock();
// 시간 측정할 수행 코드
for (vector<string>::size_type i = 0; i != vec.size(); ++i)
{
tmp.push_back(vec[i]);
}
// 종료 시간
clock_t endTime = clock();
// Millisecond
clock_t elapsed = endTime - startTime;
// Second
double timeInSecond = (double)(elapsed / CLOCKS_PER_SEC);
cout << "Elapsed: " << timeInSecond << "s(" << elapsed << "ms)" << "\n";
return 0;
}
Output)
참고로 수행 시간 측정은 디버그 모드가 아닌 릴리즈 모드로 해야 합니다. 디버그 모드에선 디버깅을 위한 다양한 로직이 추가되기 때문에 실제 결과와 다를 수 있습니다.
참고: http://www.cplusplus.com/reference/ctime/clock/
'C,C++ > C++' 카테고리의 다른 글
[C++ STL] 특정 값 제외 컨테이너 복사 std::remove_copy() 함수 (0) | 2019.11.06 |
---|---|
[C++] std::transform() 함수 및 back_inserter 함수에 대해 알아보자 (0) | 2019.11.04 |
[C++] std::equal 함수로 간단하게 회문 판별 함수 구현해보기 / palindrome (0) | 2019.11.02 |
[C++] 공백 단위로 문자열 자르는 split 함수 구현 ( find_if() 사용 ) (0) | 2019.11.01 |
[C++] 컨테이너 복사 std::copy 함수, 반복자 어댑터 std::back_inserter (1) | 2019.10.26 |
댓글