// computing and counting integer partitions // // who: Marcus Fritzsch // when: 20050125 #include "microtimer.h" #include #include #include void MicroTimer::calcDiff () { m_diff.tv_usec = m_end.tv_usec - m_start.tv_usec; m_diff.tv_sec = m_end.tv_sec - m_start.tv_sec; if (m_diff.tv_usec < 0) { m_diff.tv_sec--; m_diff.tv_usec = 1000000 - m_start.tv_usec + m_end.tv_usec; } } void MicroTimer::start () { gettimeofday (&m_start, NULL); } void MicroTimer::stop () { gettimeofday (&m_end, NULL); calcDiff (); memset (&m_start, 0, sizeof (timeval)); memset (&m_end, 0, sizeof (timeval)); } unsigned long MicroTimer::getDiff () const { return m_diff.tv_sec * 1000000 + m_diff.tv_usec; } std::ostream & operator << (std::ostream & os, const MicroTimer & mt) { os << std::setw (10) << mt.getDiff () << " us"; return os; }