//===-- Timer.h -------------------------------------------------*- C++ -*-===// // // The LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// #ifndef __PerfTestDriver__Timer__ #define __PerfTestDriver__Timer__ #include "Gauge.h" #include <chrono> using namespace std::chrono; namespace lldb_perf { class TimeGauge : public Gauge<double> { public: TimeGauge (); virtual ~TimeGauge () { } void Start (); double Stop (); virtual double GetStartValue () const; virtual double GetStopValue () const; virtual double GetDeltaValue () const; private: enum class State { eNeverUsed, eCounting, eStopped }; typedef high_resolution_clock::time_point TimeType; TimeType m_start; TimeType m_stop; double m_delta; State m_state; TimeType Now (); }; } #endif /* defined(__PerfTestDriver__Timer__) */