| //===-- 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__) */ |