| // | |
| // Copyright 2019 The ANGLE Project Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| // | |
| // Timer.cpp: Implementation of a high precision timer class. | |
| // | |
| #include "util/Timer.h" | |
| #include "common/system_utils.h" | |
| Timer::Timer() : mRunning(false), mStartTime(0), mStopTime(0) {} | |
| void Timer::start() | |
| { | |
| mStartTime = angle::GetCurrentSystemTime(); | |
| mStartCpuTime = angle::GetCurrentProcessCpuTime(); | |
| mRunning = true; | |
| } | |
| void Timer::stop() | |
| { | |
| mStopTime = angle::GetCurrentSystemTime(); | |
| mStopCpuTime = angle::GetCurrentProcessCpuTime(); | |
| mRunning = false; | |
| } | |
| double Timer::getElapsedWallClockTime() const | |
| { | |
| double endTime; | |
| if (mRunning) | |
| { | |
| endTime = angle::GetCurrentSystemTime(); | |
| } | |
| else | |
| { | |
| endTime = mStopTime; | |
| } | |
| return endTime - mStartTime; | |
| } | |
| double Timer::getElapsedCpuTime() const | |
| { | |
| double endTime; | |
| if (mRunning) | |
| { | |
| endTime = angle::GetCurrentProcessCpuTime(); | |
| } | |
| else | |
| { | |
| endTime = mStopCpuTime; | |
| } | |
| return endTime - mStartCpuTime; | |
| } |