34 #include <type_traits>
42 template<
typename TimeUnit = std::chrono::milliseconds>
48 using TimePoint = std::chrono::time_point<ChronoClock>;
66 explicit Timer(
const std::string& inName) :
92 std::this_thread::sleep_for(TimeUnit(length));
101 start_ = ChronoClock::now();
114 const auto duration =
115 static_cast<uint64>(std::chrono::duration_cast<TimeUnit>(ChronoClock::now() - start_).count());
117 if (printElapsedTime)
119 std::cout << name_ <<
"Elapsed Time = " << duration << unit_ << std::endl;
127 std::string name_{
"" };
128 std::string unit_{
"" };
133 if (std::is_same<TimeUnit, std::chrono::hours>::value)
137 else if (std::is_same<TimeUnit, std::chrono::minutes>::value)
141 else if (std::is_same<TimeUnit, std::chrono::seconds>::value)
145 else if (std::is_same<TimeUnit, std::chrono::milliseconds>::value)
147 unit_ =
" milliseconds";
149 else if (std::is_same<TimeUnit, std::chrono::microseconds>::value)
151 unit_ =
" microseconds";
153 else if (std::is_same<TimeUnit, std::chrono::nanoseconds>::value)
155 unit_ =
" nanoseconds";
159 unit_ =
" time units of some sort";
A timer class for timing code execution.
Definition: Timer.hpp:44
std::chrono::time_point< ChronoClock > TimePoint
Definition: Timer.hpp:48
uint64 toc(bool printElapsedTime=true)
Definition: Timer.hpp:112
void tic() noexcept
Definition: Timer.hpp:99
Timer(const std::string &inName)
Definition: Timer.hpp:66
Timer()
Definition: Timer.hpp:54
void setName(const std::string &inName)
Definition: Timer.hpp:79
std::chrono::high_resolution_clock ChronoClock
Definition: Timer.hpp:47
void sleep(uint32 length)
Definition: Timer.hpp:90
Definition: Coordinate.hpp:45
std::uint64_t uint64
Definition: Types.hpp:39
std::uint32_t uint32
Definition: Types.hpp:40