Timer.h revision d3a8d6565ff40fd99533f50a085ace806a9300ee
1//===-- Timer.h -------------------------------------------------*- C++ -*-===//
2//
3//                     The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
10#ifndef __PerfTestDriver__Timer__
11#define __PerfTestDriver__Timer__
12
13#include "Gauge.h"
14
15#include <chrono>
16
17using namespace std::chrono;
18
19namespace lldb_perf
20{
21class TimeGauge : public Gauge<double>
22{
23private:
24    enum class State
25    {
26        eNeverUsed,
27        eCounting,
28        eStopped
29    };
30
31    typedef high_resolution_clock::time_point TimeType;
32    TimeType m_start;
33    double m_value;
34    State m_state;
35
36    TimeType
37    Now ();
38
39public:
40    TimeGauge ();
41
42    virtual
43    ~TimeGauge ()
44    {
45    }
46
47    void
48    Start ();
49
50    double
51    Stop ();
52
53    double
54    GetValue ();
55};
56}
57
58#endif /* defined(__PerfTestDriver__Timer__) */
59