41 template<
typename TimeUnit = std::chrono::milliseconds>
47 using TimePoint = std::chrono::time_point<ChronoClock>;
65 explicit Timer(
const std::string& inName) :
91 std::this_thread::sleep_for(TimeUnit(length));
100 start_ = ChronoClock::now();
113 const auto duration =
static_cast<uint64>(std::chrono::duration_cast<TimeUnit>(ChronoClock::now() - start_).count());
115 if (printElapsedTime)
117 std::cout << name_ <<
"Elapsed Time = " << duration << unit_ << std::endl;
125 std::string name_{
"" };
126 std::string unit_{
"" };
131 if (std::is_same<TimeUnit, std::chrono::hours>::value)
135 else if (std::is_same<TimeUnit, std::chrono::minutes>::value)
139 else if (std::is_same<TimeUnit, std::chrono::seconds>::value)
143 else if (std::is_same<TimeUnit, std::chrono::milliseconds>::value)
145 unit_ =
" milliseconds";
147 else if (std::is_same<TimeUnit, std::chrono::microseconds>::value)
149 unit_ =
" microseconds";
151 else if (std::is_same<TimeUnit, std::chrono::nanoseconds>::value)
153 unit_ =
" nanoseconds";
157 unit_ =
" time units of some sort";