mirror of
https://codeberg.org/vcbferreira/NuFI_deal.ii
synced 2026-08-12 14:33:18 +02:00
30 lines
616 B
C++
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
|