27 double b2Timer::s_invFrequency = 0.0;
29 #ifndef WIN32_LEAN_AND_MEAN 30 #define WIN32_LEAN_AND_MEAN 37 LARGE_INTEGER largeInteger;
39 if (s_invFrequency == 0.0)
41 QueryPerformanceFrequency(&largeInteger);
42 s_invFrequency = double(largeInteger.QuadPart);
43 if (s_invFrequency > 0.0)
45 s_invFrequency = 1000.0 / s_invFrequency;
49 QueryPerformanceCounter(&largeInteger);
50 m_start = double(largeInteger.QuadPart);
55 LARGE_INTEGER largeInteger;
56 QueryPerformanceCounter(&largeInteger);
57 m_start = double(largeInteger.QuadPart);
62 LARGE_INTEGER largeInteger;
63 QueryPerformanceCounter(&largeInteger);
64 double count = double(largeInteger.QuadPart);
65 float ms = float(s_invFrequency * (count - m_start));
69 #elif defined(__linux__) || defined (__APPLE__) 82 m_start_sec = t.tv_sec;
83 m_start_usec = t.tv_usec;
90 time_t start_sec = m_start_sec;
91 suseconds_t start_usec = m_start_usec;
94 if (t.tv_usec < start_usec)
96 int nsec = (start_usec - t.tv_usec) / 1000000 + 1;
97 start_usec -= 1000000 * nsec;
101 if (t.tv_usec - start_usec > 1000000)
103 int nsec = (t.tv_usec - start_usec) / 1000000;
104 start_usec += 1000000 * nsec;
107 return 1000.0f * (t.tv_sec - start_sec) + 0.001f * (t.tv_usec - start_usec);
geometry_msgs::TransformStamped t
void Reset()
Reset the timer.
float GetMilliseconds() const
Get the time since construction or the last reset.