1*8975f5c5SAndroid Build Coastguard Worker // 2*8975f5c5SAndroid Build Coastguard Worker // Copyright 2019 The ANGLE Project Authors. All rights reserved. 3*8975f5c5SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 4*8975f5c5SAndroid Build Coastguard Worker // found in the LICENSE file. 5*8975f5c5SAndroid Build Coastguard Worker // 6*8975f5c5SAndroid Build Coastguard Worker // Timer.cpp: Implementation of a high precision timer class. 7*8975f5c5SAndroid Build Coastguard Worker // 8*8975f5c5SAndroid Build Coastguard Worker 9*8975f5c5SAndroid Build Coastguard Worker #include "util/Timer.h" 10*8975f5c5SAndroid Build Coastguard Worker 11*8975f5c5SAndroid Build Coastguard Worker #include "common/system_utils.h" 12*8975f5c5SAndroid Build Coastguard Worker Timer()13*8975f5c5SAndroid Build Coastguard WorkerTimer::Timer() : mRunning(false), mStartTime(0), mStopTime(0) {} 14*8975f5c5SAndroid Build Coastguard Worker start()15*8975f5c5SAndroid Build Coastguard Workervoid Timer::start() 16*8975f5c5SAndroid Build Coastguard Worker { 17*8975f5c5SAndroid Build Coastguard Worker mStartTime = angle::GetCurrentSystemTime(); 18*8975f5c5SAndroid Build Coastguard Worker mStartCpuTime = angle::GetCurrentProcessCpuTime(); 19*8975f5c5SAndroid Build Coastguard Worker mRunning = true; 20*8975f5c5SAndroid Build Coastguard Worker } 21*8975f5c5SAndroid Build Coastguard Worker stop()22*8975f5c5SAndroid Build Coastguard Workervoid Timer::stop() 23*8975f5c5SAndroid Build Coastguard Worker { 24*8975f5c5SAndroid Build Coastguard Worker mStopTime = angle::GetCurrentSystemTime(); 25*8975f5c5SAndroid Build Coastguard Worker mStopCpuTime = angle::GetCurrentProcessCpuTime(); 26*8975f5c5SAndroid Build Coastguard Worker mRunning = false; 27*8975f5c5SAndroid Build Coastguard Worker } 28*8975f5c5SAndroid Build Coastguard Worker getElapsedWallClockTime() const29*8975f5c5SAndroid Build Coastguard Workerdouble Timer::getElapsedWallClockTime() const 30*8975f5c5SAndroid Build Coastguard Worker { 31*8975f5c5SAndroid Build Coastguard Worker double endTime; 32*8975f5c5SAndroid Build Coastguard Worker if (mRunning) 33*8975f5c5SAndroid Build Coastguard Worker { 34*8975f5c5SAndroid Build Coastguard Worker endTime = angle::GetCurrentSystemTime(); 35*8975f5c5SAndroid Build Coastguard Worker } 36*8975f5c5SAndroid Build Coastguard Worker else 37*8975f5c5SAndroid Build Coastguard Worker { 38*8975f5c5SAndroid Build Coastguard Worker endTime = mStopTime; 39*8975f5c5SAndroid Build Coastguard Worker } 40*8975f5c5SAndroid Build Coastguard Worker 41*8975f5c5SAndroid Build Coastguard Worker return endTime - mStartTime; 42*8975f5c5SAndroid Build Coastguard Worker } 43*8975f5c5SAndroid Build Coastguard Worker getElapsedCpuTime() const44*8975f5c5SAndroid Build Coastguard Workerdouble Timer::getElapsedCpuTime() const 45*8975f5c5SAndroid Build Coastguard Worker { 46*8975f5c5SAndroid Build Coastguard Worker double endTime; 47*8975f5c5SAndroid Build Coastguard Worker if (mRunning) 48*8975f5c5SAndroid Build Coastguard Worker { 49*8975f5c5SAndroid Build Coastguard Worker endTime = angle::GetCurrentProcessCpuTime(); 50*8975f5c5SAndroid Build Coastguard Worker } 51*8975f5c5SAndroid Build Coastguard Worker else 52*8975f5c5SAndroid Build Coastguard Worker { 53*8975f5c5SAndroid Build Coastguard Worker endTime = mStopCpuTime; 54*8975f5c5SAndroid Build Coastguard Worker } 55*8975f5c5SAndroid Build Coastguard Worker 56*8975f5c5SAndroid Build Coastguard Worker return endTime - mStartCpuTime; 57*8975f5c5SAndroid Build Coastguard Worker } 58