#include #include #include using namespace std; class Timer { private: std::chrono::high_resolution_clock::time_point _start, _stop; public: Timer() { _start = std::chrono::high_resolution_clock::now(); _stop = _start; } void start() { _start = std::chrono::high_resolution_clock::now(); } void stop() { _stop = std::chrono::high_resolution_clock::now(); } friend ostream& operator<<(ostream& out, Timer& obj) { auto elapsed_ns = std::chrono::duration_cast(obj._stop - obj._start); auto elapsed_ms = std::chrono::duration_cast(obj._stop - obj._start); auto elapsed_s = elapsed_ms.count() / 1000.0; out << "time_ns=" << elapsed_ns.count() << endl; out << "time_ms=" << elapsed_ns.count() << endl; out << "time_s=" << setprecision(3) << elapsed_s << endl; return out; } };