MCPcopy Create free account
hub / github.com/Profactor/cv-plot / Duration

Class Duration

CvPlot/ext/catch2/inc/catch.hpp:15952–16026  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

15950struct RowBreak {};
15951
15952class Duration {
15953 enum class Unit {
15954 Auto,
15955 Nanoseconds,
15956 Microseconds,
15957 Milliseconds,
15958 Seconds,
15959 Minutes
15960 };
15961 static const uint64_t s_nanosecondsInAMicrosecond = 1000;
15962 static const uint64_t s_nanosecondsInAMillisecond = 1000 * s_nanosecondsInAMicrosecond;
15963 static const uint64_t s_nanosecondsInASecond = 1000 * s_nanosecondsInAMillisecond;
15964 static const uint64_t s_nanosecondsInAMinute = 60 * s_nanosecondsInASecond;
15965
15966 uint64_t m_inNanoseconds;
15967 Unit m_units;
15968
15969public:
15970 explicit Duration(double inNanoseconds, Unit units = Unit::Auto)
15971 : Duration(static_cast<uint64_t>(inNanoseconds), units) {
15972 }
15973
15974 explicit Duration(uint64_t inNanoseconds, Unit units = Unit::Auto)
15975 : m_inNanoseconds(inNanoseconds),
15976 m_units(units) {
15977 if (m_units == Unit::Auto) {
15978 if (m_inNanoseconds < s_nanosecondsInAMicrosecond)
15979 m_units = Unit::Nanoseconds;
15980 else if (m_inNanoseconds < s_nanosecondsInAMillisecond)
15981 m_units = Unit::Microseconds;
15982 else if (m_inNanoseconds < s_nanosecondsInASecond)
15983 m_units = Unit::Milliseconds;
15984 else if (m_inNanoseconds < s_nanosecondsInAMinute)
15985 m_units = Unit::Seconds;
15986 else
15987 m_units = Unit::Minutes;
15988 }
15989
15990 }
15991
15992 auto value() const -> double {
15993 switch (m_units) {
15994 case Unit::Microseconds:
15995 return m_inNanoseconds / static_cast<double>(s_nanosecondsInAMicrosecond);
15996 case Unit::Milliseconds:
15997 return m_inNanoseconds / static_cast<double>(s_nanosecondsInAMillisecond);
15998 case Unit::Seconds:
15999 return m_inNanoseconds / static_cast<double>(s_nanosecondsInASecond);
16000 case Unit::Minutes:
16001 return m_inNanoseconds / static_cast<double>(s_nanosecondsInAMinute);
16002 default:
16003 return static_cast<double>(m_inNanoseconds);
16004 }
16005 }
16006 auto unitsAsString() const -> std::string {
16007 switch (m_units) {
16008 case Unit::Nanoseconds:
16009 return "ns";

Callers 3

analyseFunction · 0.85
benchmarkStartingMethod · 0.85
benchmarkEndedMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected