diff options
Diffstat (limited to 'tools/lldb-perf/lib/Timer.cpp')
| -rw-r--r-- | tools/lldb-perf/lib/Timer.cpp | 61 | 
1 files changed, 61 insertions, 0 deletions
| diff --git a/tools/lldb-perf/lib/Timer.cpp b/tools/lldb-perf/lib/Timer.cpp new file mode 100644 index 000000000000..4bbab904c63e --- /dev/null +++ b/tools/lldb-perf/lib/Timer.cpp @@ -0,0 +1,61 @@ +//===-- Timer.cpp -----------------------------------------------*- C++ -*-===// +// +//                     The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#include "Timer.h" +#include <assert.h> + +using namespace lldb_perf; + +TimeGauge::TimeType +TimeGauge::Now () +{ +	return high_resolution_clock::now(); +} + +TimeGauge::TimeGauge () : +    m_start(), +    m_state(TimeGauge::State::eNeverUsed) +{ +} + +void +TimeGauge::Start () +{ +	m_state = TimeGauge::State::eCounting; +	m_start = Now(); +} + +double +TimeGauge::Stop () +{ +	m_stop = Now(); +	assert(m_state == TimeGauge::State::eCounting && "cannot stop a non-started clock"); +	m_state = TimeGauge::State::eStopped; +    m_delta = duration_cast<duration<double>>(m_stop-m_start).count(); +	return m_delta; +} + +double +TimeGauge::GetStartValue () const +{ +    return (double)m_start.time_since_epoch().count() * (double)system_clock::period::num / (double)system_clock::period::den; +} + +double +TimeGauge::GetStopValue () const +{ +    return (double)m_stop.time_since_epoch().count() * (double)system_clock::period::num / (double)system_clock::period::den; +} + +double +TimeGauge::GetDeltaValue () const +{ +	assert(m_state == TimeGauge::State::eStopped && "clock must be used before you can evaluate it"); +	return m_delta; +} | 
