Files

30 lines
616 B
C++

#ifndef STOPWATCH_H
#define STOPWATCH_H
#include <chrono>
template <typename real> class stopwatch {
public:
void reset();
real elapsed();
private:
using clock = std::chrono::high_resolution_clock;
clock::time_point t0{clock::now()};
};
template <typename real> inline void stopwatch<real>::reset() {
t0 = clock::now();
}
template <typename real> inline real stopwatch<real>::elapsed() {
using seconds = std::chrono::duration<real, std::ratio<1, 1>>;
auto tnow = clock::now();
auto duration = std::chrono::duration_cast<seconds>(tnow - t0);
return duration.count();
}
#endif // STOPWATCH_H