깃헙
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 |