Files
vio/GPU_version/svo/include/gpu_svo/timer.h
T
2021-05-26 10:50:20 +02:00

82 lines
1.2 KiB
C++

#ifndef TIMER_H
#define TIMER_H
#include <sys/time.h>
#include <stdio.h>
#include <unistd.h>
namespace vk
{
class Timer
{
private:
timeval start_time_;
double time_;
double accumulated_;
public:
/// The constructor directly starts the timer.
Timer() :
time_(0.0),
accumulated_(0.0)
{
start();
}
~Timer()
{}
inline void start()
{
accumulated_ = 0.0;
gettimeofday(&start_time_, NULL);
}
inline void resume()
{
gettimeofday(&start_time_, NULL);
}
inline double stop()
{
timeval end_time;
gettimeofday(&end_time, NULL);
long seconds = end_time.tv_sec - start_time_.tv_sec;
long useconds = end_time.tv_usec - start_time_.tv_usec;
time_ = ((seconds) + useconds*0.000001) + accumulated_;
accumulated_ = time_;
return time_;
}
inline double getTime() const
{
return time_;
}
inline void reset()
{
time_ = 0.0;
accumulated_ = 0.0;
}
static double getCurrentTime()
{
timeval time_now;
gettimeofday(&time_now, NULL);
return time_now.tv_sec + time_now.tv_usec*0.000001;
}
static double getCurrentSecond()
{
timeval time_now;
gettimeofday(&time_now, NULL);
return time_now.tv_sec;
}
};
} // end namespace vk
#endif