43 typedef std::chrono::time_point<std::chrono::steady_clock, std::chrono::nanoseconds>
stop_watch;
55 std::chrono::nanoseconds
took;
80 return std::chrono::duration_cast<std::chrono::milliseconds>(
took).count();
93 return std::chrono::duration_cast<std::chrono::microseconds>(
took).count();
106 return std::chrono::duration_cast<std::chrono::nanoseconds>(
took).count();
121 return std::chrono::steady_clock::now();
135 return std::chrono::steady_clock::now() - watch;
151 std::this_thread::sleep_for (std::chrono::milliseconds(100));
157 size_t nano =
took.nanoseconds();
158 size_t micro =
took.microseconds();
159 size_t milli =
took.milliseconds();
164 size_t nano_as_micro = nano / 1000;
165 JASS_assert((nano_as_micro >= micro - 1) && (nano_as_micro - 1 <= micro));
170 size_t nano_as_milli = nano / 1000
'000; 171 JASS_assert((nano_as_milli >= milli - 1) && (nano_as_milli - 1 <= milli)); 176 puts("timer::PASSED"); std::chrono::nanoseconds took
The time delta that this duration represents.
Definition: timer.h:55
auto microseconds(void)
Return the time-slice as number of microseconds.
Definition: timer.h:91
replacement for the C runtime library assert that also works in release.
static stop_watch start()
Start a stop watfh.
Definition: timer.h:119
static duration stop(stop_watch watch)
Return the time on the stop watch.
Definition: timer.h:133
#define JASS_assert(expression)
Drop in replacement for assert() that aborts in Release as well as Debug.
Definition: asserts.h:33
auto milliseconds(void)
Return the time-slice as number of milliseconds.
Definition: timer.h:78
General purpose cross-platform timer methods for C++11 and later.
Definition: timer.h:32
A duration as returned by a stop_watch.
Definition: timer.h:52
static void unittest(void)
Unit test this class.
Definition: timer.h:145
auto nanoseconds(void)
Return the time-slice as number of nanoseconds.
Definition: timer.h:104
duration(std::chrono::nanoseconds value)
Convert a std::chrono::nanoseconds into a JASS::timer::duration object.
Definition: timer.h:65
Definition: compress_integer_elias_delta_simd.c:23
std::chrono::time_point< std::chrono::steady_clock, std::chrono::nanoseconds > stop_watch
An instance of a timer.
Definition: timer.h:43