본문 바로가기
C,C++/C++

[C++] 수행 시간 측정 clock 함수 | ctime, clock_t, measure time

by woohyeon 2019. 10. 13.
반응형

Header: <ctime>
clock_t  clock(void);
: clock() 함수는 프로그램의 실행 시작으로부터 경과된 시간을 clock ticks 수로 반환합니다.
단위는 clock tick이지만 ms와 동일합니다. 즉 ms단위를 정수형으로 반환합니다.
ctime에 정의되어있는  CLOCKS_PER_SEC과 같이 사용하면 sec(초) 단위로 출력할 수 있습니다. 

더 정밀하게 측정하고 싶다면 chrono 라이브러리를 참고하세요.

 

clock_t 타입

 

ctime

 



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/

 




댓글