MCPcopy Create free account
hub / github.com/InteractiveComputerGraphics/SPlisHSPlasH / Duration

Class Duration

extern/Catch2/catch.hpp:16297–16367  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

16295struct RowBreak {};
16296
16297class Duration {
16298 enum class Unit {
16299 Auto,
16300 Nanoseconds,
16301 Microseconds,
16302 Milliseconds,
16303 Seconds,
16304 Minutes
16305 };
16306 static const uint64_t s_nanosecondsInAMicrosecond = 1000;
16307 static const uint64_t s_nanosecondsInAMillisecond = 1000 * s_nanosecondsInAMicrosecond;
16308 static const uint64_t s_nanosecondsInASecond = 1000 * s_nanosecondsInAMillisecond;
16309 static const uint64_t s_nanosecondsInAMinute = 60 * s_nanosecondsInASecond;
16310
16311 double m_inNanoseconds;
16312 Unit m_units;
16313
16314public:
16315 explicit Duration(double inNanoseconds, Unit units = Unit::Auto)
16316 : m_inNanoseconds(inNanoseconds),
16317 m_units(units) {
16318 if (m_units == Unit::Auto) {
16319 if (m_inNanoseconds < s_nanosecondsInAMicrosecond)
16320 m_units = Unit::Nanoseconds;
16321 else if (m_inNanoseconds < s_nanosecondsInAMillisecond)
16322 m_units = Unit::Microseconds;
16323 else if (m_inNanoseconds < s_nanosecondsInASecond)
16324 m_units = Unit::Milliseconds;
16325 else if (m_inNanoseconds < s_nanosecondsInAMinute)
16326 m_units = Unit::Seconds;
16327 else
16328 m_units = Unit::Minutes;
16329 }
16330
16331 }
16332
16333 auto value() const -> double {
16334 switch (m_units) {
16335 case Unit::Microseconds:
16336 return m_inNanoseconds / static_cast<double>(s_nanosecondsInAMicrosecond);
16337 case Unit::Milliseconds:
16338 return m_inNanoseconds / static_cast<double>(s_nanosecondsInAMillisecond);
16339 case Unit::Seconds:
16340 return m_inNanoseconds / static_cast<double>(s_nanosecondsInASecond);
16341 case Unit::Minutes:
16342 return m_inNanoseconds / static_cast<double>(s_nanosecondsInAMinute);
16343 default:
16344 return m_inNanoseconds;
16345 }
16346 }
16347 auto unitsAsString() const -> std::string {
16348 switch (m_units) {
16349 case Unit::Nanoseconds:
16350 return "ns";
16351 case Unit::Microseconds:
16352 return "us";
16353 case Unit::Milliseconds:
16354 return "ms";

Callers 3

analyseFunction · 0.85
benchmarkStartingMethod · 0.85
benchmarkEndedMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected