git-svn-id: https://www4.informatik.uni-erlangen.de/i4svn/danceos/trunk/devel/fail@1869 8c4709b5-6ec9-48aa-a5cd-a96041d1645a
70 lines
1.6 KiB
C++
70 lines
1.6 KiB
C++
/**
|
|
* \brief The WallclockTimer measures the elapsed time
|
|
*
|
|
* The WallclockTimer measures the time which is elapsed between start
|
|
* and stop of the timer.
|
|
*/
|
|
|
|
#ifndef __WALLCLOCKTIMER_HPP__
|
|
#define __WALLCLOCKTIMER_HPP__
|
|
|
|
#include <string>
|
|
#include <stdlib.h>
|
|
#include <sys/time.h>
|
|
|
|
namespace fail {
|
|
|
|
/**
|
|
* \class WallclockTimer
|
|
*
|
|
* The class WallclockTimer contains all functions for start,
|
|
* stop, reset and to get the elapsed time.
|
|
*/
|
|
class WallclockTimer {
|
|
private:
|
|
bool m_IsRunning;
|
|
struct timeval m_Start, m_End;
|
|
public:
|
|
WallclockTimer() : m_IsRunning(false) { }
|
|
virtual ~WallclockTimer() { }
|
|
/**
|
|
* Starts the timer.
|
|
*/
|
|
void startTimer();
|
|
/**
|
|
* Returns the elapsed time as \c std::string. This works while the timer
|
|
* is running, and if it is stopped.
|
|
*/
|
|
std::string getRuntimeAsString() const;
|
|
/**
|
|
* Returns the elapsed time as \c double. This works while the timer
|
|
* is running, and if it is stopped.
|
|
*/
|
|
double getRuntimeAsDouble() const;
|
|
/**
|
|
* Stops the timer.
|
|
*/
|
|
void stopTimer();
|
|
/**
|
|
* Resets the timer. The timer is stopped after calling reset().
|
|
*/
|
|
void reset();
|
|
/**
|
|
* Returns the elapsed time as \c double. This works while the
|
|
* timer is running, and if it is stopped.
|
|
*/
|
|
operator double() { return getRuntimeAsDouble(); }
|
|
/**
|
|
* Returns the elapsed time as \c int. This works while the timer
|
|
* is running, and if it is stopped.
|
|
*/
|
|
operator int() { return (int)getRuntimeAsDouble(); }
|
|
};
|
|
|
|
inline std::ostream& operator<< (std::ostream& os, const WallclockTimer& w)
|
|
{ return os << w.getRuntimeAsString(); }
|
|
|
|
} // end-of-namespace: fail
|
|
|
|
#endif // __WALLCLOCKTIMER_HPP__
|