From 9e6d35490a6542f9c97607f93c2ef8ca8e03cbcc Mon Sep 17 00:00:00 2001 From: Dimitry Andric Date: Wed, 6 Jan 2016 20:12:03 +0000 Subject: Vendor import of lldb trunk r256945: https://llvm.org/svn/llvm-project/lldb/trunk@256945 --- tools/lldb-perf/lib/Timer.cpp | 61 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 tools/lldb-perf/lib/Timer.cpp (limited to 'tools/lldb-perf/lib/Timer.cpp') 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 + +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>(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; +} -- cgit v1.2.3