C++ Chapter 8.15 : 실행 시간 측정하기

Date:     Updated:

카테고리:

태그:

인프런에 있는 홍정모 교수님의 홍정모의 따라 하며 배우는 C++ 강의를 듣고 정리한 필기입니다. 😀
🌜 [홍정모의 따라 하며 배우는 C++]강의 들으러 가기!


chapter 8. 객체 지향의 기초 : 실행 시간 측정하기

  • 실행 시간은 컴퓨터 환경에 따라서도 많이 달라진다는 것에 주의하자.
  • 실행 시간은 실제로 사용자들에게 배포하는 Release 모드에서 재야 한다.
    • Debug 모드Release 모드보다 7 ~ 8배는 더 느리다.

🔔 실행시간 재는 코드

📜Timer

  • 교수님께서도 실행 시간을 잴 때는 다음 코드를 복사하고 붙여넣기 하여 사용하신다고 하셨다. 실행 시간을 측정할 일이 있다면 아래 코드를 사용하자.
#include <iostream>
#include <vector>
#include <algorithm>
#include <random>
#include <chrono> // ⭐시간 측정에 필요

using namespace std;

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

    // Time 타입의 객체가 생성되자마자 start_time 멤버 변수에 시작 시간이 대입된다.
    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();  // elapsed() 멤버 함수를 실행한 시간

        // elapsed() 멤버 함수가 실행되자마자 end_time - start_time 빼주어 실행 시간을 구하고 출력한다.
        cout << std::chrono::duration_cast<secont_t>(end_time - start_time).count() << endl;
    }
};

실행시간 재기

예시 : vec 벡터를 정렬하는데 걸린 시간 재기

  1. Timer 타입의 객체를 생성한다.
    • 시작 시간 저장
  2. 실행시간을 측정할 연산을 실행한다.
    • 벡터를 정렬하는 연산 실행
  3. elapsed() 멤버 함수를 호출하여 실행 시간을 계산하고 출력한다.
int main()
{
    random_device rnd_device;
    mt19937 mersenne_engine{ rnd_device() };

    vector<int> vec(10);
    for (unsigned int i = 0; i < vec.size(); i++)
        vec[i] = i;
    
    std::shuffle(begin(vec), end(vec), mersenne_engine); // 랜덤하게 섞기

    for (suto &e : vec) cout << e << " " ; // 정렬 전 벡터 상태 출력
    cout << endl;

    Timer timer; // Timer 타입의 객체를 생성(시작 시간 저장)

    std::sort(begin(vec), end(vec)); // 정렬

    timer.elapsed();  // 실행 시간 측정 및 출력

    for (suto &e : vec) cout << e << " " ; // 정렬 후 벡터 상태 출력
    cout << endl;

    return 0;
}
💎출력💎

2 0 1 7 4 8 6 9 3 5
6.257e-06
0 1 2 3 4 5 6 7 8 9


🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우 
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄

맨 위로 이동하기


Cpp 카테고리 내 다른 글 보러가기

댓글 남기기