(C++) 8.13 실행 시간 측정하기

이준우·2021년 11월 24일
0
#include <iostream>
#include <vector>
#include <algorithm>
#include <random>
#include <chrono>

using namespace std;

class Timer
{
	using clock_t = std::chrono::high_resolution_clock;
	using second_t = std::chrono::duration<double, std::ratio<1>>;

	std::chrono::time_point<clock_t> start_time = clock_t::now();

public:
	void elapsed()
	{
		std::chrono::time_point<clock_t> end_time = clock_t::now();

		cout << std::chrono::duration_cast<second_t>(end_time - start_time).count() << endl;
	}

};

int main()
{
	random_device rnd_device;
	mt19937 mersenne_engine{ rnd_device() };

	vector<int> vec(100000);
	for (unsigned int i = 0; i < vec.size(); ++i)
		vec[i] = i;

	std::shuffle(begin(vec), end(vec), mersenne_engine);

	/*for (auto &e : vec)
		cout << e << " ";
	cout << endl;*/

	Timer timer;

	std::sort(begin(vec), end(vec));

	timer.elapsed();

	/*for (auto &e : vec)
		cout << e << " ";
	cout << endl;*/

	return 0;
}

우리가 디버그 모드로 돌릴때와 릴리즈 모드로 돌릴 때의 속도는 다르므로, 실제 시간을 측정하고 싶다면 릴리즈 모드로 돌려 측정하는 것이 좋다. 적어도 3번을 돌려본 다음 시간을 측정하는 것이 올바른 방법이다.

0개의 댓글