diff --git a/src/util/stopwatch.h b/src/util/stopwatch.h index 661d3762b..425a13567 100644 --- a/src/util/stopwatch.h +++ b/src/util/stopwatch.h @@ -90,7 +90,7 @@ public: ~stopwatch() {} void reset() { - m_time = 0ull; + m_time = 0ull; } void start() { @@ -101,11 +101,11 @@ public: } void stop() { - if (m_running) { + if (m_running) { mach_timespec_t _stop; clock_get_time(m_host_clock, &_stop); m_time += (_stop.tv_sec - m_start.tv_sec) * 1000000000ull; - m_time += (_stop.tv_nsec - m_start.tv_nsec); + m_time += (_stop.tv_nsec - m_start.tv_nsec); m_running = false; } } @@ -120,7 +120,7 @@ public: } double get_current_seconds() const { - return get_seconds(); + return get_seconds(); } }; @@ -141,22 +141,23 @@ public: ~stopwatch() {} void reset() { - m_time = 0ull; + m_time = 0ull; } void start() { if (!m_running) { - clock_gettime(CLOCK_THREAD_CPUTIME_ID, &m_start); + clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &m_start); m_running = true; } } void stop() { - if (m_running) { + if (m_running) { struct timespec _stop; - clock_gettime(CLOCK_THREAD_CPUTIME_ID, &_stop); + clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &_stop); m_time += (_stop.tv_sec - m_start.tv_sec) * 1000000000ull; - m_time += (_stop.tv_nsec - m_start.tv_nsec); + if (m_time != 0 || _stop.tv_nsec >= m_start.tv_nsec) + m_time += (_stop.tv_nsec - m_start.tv_nsec); m_running = false; } } @@ -171,7 +172,7 @@ public: } double get_current_seconds() const { - return get_seconds(); + return get_seconds(); } };