[C++] 시간측정용 클래스 : Timer

깃헙
https://github.com/myyrakle/Timer





선언+구현

| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 | #include  namespace chrono = std::chrono; //시간 측정용 클래스입니다.class Timer{public:    void start() //타이머를 가동합니다.    {        start_point = chrono::system_clock::now();    }    void stop() //타이머를 중단합니다.    {        stop_point = chrono::system_clock::now();    }    const Timer& stop_and() //타이머를 중단하고 자기 자신을 반환합니다. 바로 get 메서드들을 쓰면 됩니다.    {        stop();        return *this;    }    void clear() //값을 초기화합니다.    {        start_point = chrono::time_pointchrono::system_clock::min();        stop_point = chrono::time_pointchrono::system_clock::min();    }public:    template<class seconds_t>    long long get_time() const //측정 메서드의 템플릿입니다.    {        return chrono::duration_cast<seconds_t>(stop_point - start_point).count();    }    long long get_nano() const //나노세컨드 단위입니다.    {        return get_timechrono::nanoseconds();    }    long long get_micro() const //마이크로세컨드 단위입니다.    {        return get_timechrono::microseconds();    }    long long get_milli() const //밀리세컨드 단위입니다.    {        return get_timechrono::milliseconds();    }    long long get_seconds() const //세컨드 단위입니다.    {        return get_timechrono::seconds();    }    long long get_minutes() const //분 단위입니다.    {        return get_timechrono::minutes();    }    long long get_hours() const //시간 단위입니다.    {        return get_timechrono::hours();    }private:    chrono::time_pointchrono::system_clock start_point; //시작지점입니다.    chrono::time_pointchrono::system_clock stop_point; //중단지점입니다.public:    Timer() = default;    Timer(const Timer&) = default;    Timer(Timer&&) = default;    Timer& operator= (const Timer&) = default;    Timer& operator= (Timer&&) = default;    virtual ~Timer() = default;}; Colored by Color Scripter | cs |



선언.h


| 12345678910111213141516171819202122232425262728293031323334353637383940 | #include  //since c++11 namespace chrono = std::chrono; //시간 측정용 클래스입니다.class Timer{public:    void start(); //타이머를 가동합니다.    void stop(); //타이머를 중단합니다.    const Timer& stop_and(); //타이머를 중단하고 자기 자신을 반환합니다. 바로 get 메서드들을 쓰면 됩니다.    void clear(); //값을 초기화합니다.public:    template<class seconds_t>    long long get_time() const; //측정 메서드의 템플릿입니다.    long long get_nano() const; //나노세컨드 단위입니다.    long long get_micro() const; //마이크로세컨드 단위입니다.    long long get_milli() const; //밀리세컨드 단위입니다.    long long get_seconds() const; //세컨드 단위입니다.    long long get_minutes() const; //분 단위입니다.    long long get_hours() const; //시간 단위입니다.private:    chrono::time_pointchrono::system_clock start_point; //시작지점입니다.    chrono::time_pointchrono::system_clock stop_point; //중단지점입니다.public:    Timer() = default;    Timer(const Timer&) = default;    Timer(Timer&&) = default;    Timer& operator= (const Timer&) = default;    Timer& operator= (Timer&&) = default;    virtual ~Timer() = default;}; template<class seconds_t>inline long long Timer::get_time() const{    return chrono::duration_cast<seconds_t>(stop_point - start_point).count();    return 0;} Colored by Color Scripter | cs |


구현.cpp

| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 | #include "Timer.h"  void Timer::start(){    start_point = chrono::system_clock::now();} void Timer::stop(){    stop_point = chrono::system_clock::now();} const Timer & Timer::stop_and(){    stop();    return *this;} void Timer::clear(){    start_point = chrono::time_pointchrono::system_clock::min();    stop_point = chrono::time_pointchrono::system_clock::min();} long long Timer::get_nano() const{    return get_timechrono::nanoseconds();} long long Timer::get_micro() const{    return get_timechrono::microseconds();} long long Timer::get_milli() const{    return get_timechrono::milliseconds();} long long Timer::get_seconds() const{    return get_timechrono::seconds();} long long Timer::get_minutes() const{    return get_timechrono::minutes();} long long Timer::get_hours() const{    return get_timechrono::hours();}  Colored by Color Scripter | cs |