50 lines
		
	
	
		
			1018 B
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			50 lines
		
	
	
		
			1018 B
		
	
	
	
		
			C++
		
	
	
	
//===-- 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__) */
 |