//===-- 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; }