Fix time measurement issud

This commit is contained in:
Shawn Chain
2018-07-04 17:54:38 +08:00
parent ae532156c5
commit 657ef07b56
2 changed files with 7 additions and 12 deletions

View File

@@ -64,21 +64,16 @@ CStopWatch::~CStopWatch()
unsigned long CStopWatch::start() unsigned long CStopWatch::start()
{ {
::gettimeofday(&m_start, NULL); ::clock_gettime(CLOCK_MONOTONIC, &m_start);
return m_start.tv_sec;
return m_start.tv_usec;
} }
unsigned int CStopWatch::elapsed() unsigned int CStopWatch::elapsed()
{ {
struct timeval now; struct timespec now;
::gettimeofday(&now, NULL); ::clock_gettime(CLOCK_MONOTONIC, &now);
int offset = ((now.tv_sec - m_start.tv_sec) * 1000000000UL + now.tv_nsec - m_start.tv_nsec ) / 1000000UL;
unsigned int elapsed = (now.tv_sec - m_start.tv_sec) * 1000U; return (unsigned int)offset;
elapsed += now.tv_usec / 1000U;
elapsed -= m_start.tv_usec / 1000U;
return elapsed;
} }
#endif #endif

View File

@@ -39,7 +39,7 @@ private:
LARGE_INTEGER m_frequency; LARGE_INTEGER m_frequency;
LARGE_INTEGER m_start; LARGE_INTEGER m_start;
#else #else
struct timeval m_start; struct timespec m_start;
#endif #endif
}; };