37 #ifndef CLOE_UTILITY_TIMER_HPP_ 38 #define CLOE_UTILITY_TIMER_HPP_ 45 using Milliseconds = std::chrono::duration<double, std::milli>;
46 using TimePoint = std::chrono::high_resolution_clock::time_point;
50 explicit ScopeTimer(std::function<
void(TimePoint, TimePoint)> fn) : fn_(fn) {
51 start_ = std::chrono::high_resolution_clock::now();
60 auto end = std::chrono::high_resolution_clock::now();
66 std::function<void(TimePoint, TimePoint)> fn_;
69 template <
typename P = Milliseconds>
73 explicit DurationTimer(std::function<
void(P)> fn) : fn_(fn) { this->reset(); }
81 auto end = std::chrono::high_resolution_clock::now();
83 fn_(std::chrono::duration_cast<P>(end - start_));
88 auto previous_start = start_;
89 start_ = std::chrono::high_resolution_clock::now();
90 return std::chrono::duration_cast<P>(start_ - previous_start);
94 auto now = std::chrono::high_resolution_clock::now();
95 return std::chrono::duration_cast<P>(now - start_);
100 std::function<void(P)> fn_;
105 #endif // CLOE_UTILITY_TIMER_HPP_