/* * Copyright 2011 Google Inc. * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #include "BenchTimer.h" #if defined(SK_BUILD_FOR_WIN32) #include "BenchSysTimer_windows.h" #elif defined(SK_BUILD_FOR_MAC) #include "BenchSysTimer_mach.h" #elif defined(SK_BUILD_FOR_UNIX) #include "BenchSysTimer_posix.h" #else #include "BenchSysTimer_c.h" #endif #if defined(SK_MESA) || \ defined(SK_BUILD_FOR_WIN32) || \ defined(SK_BUILD_FOR_MAC) || \ defined(SK_BUILD_FOR_UNIX) #include "BenchGpuTimer_gl.h" #else #include "BenchGpuTimer_none.h" #endif BenchTimer::BenchTimer() : fCpu(-1.0) , fWall(-1.0) , fGpu(-1.0) { this->fSysTimer = new BenchSysTimer(); this->fGpuTimer = new BenchGpuTimer(); } BenchTimer::~BenchTimer() { delete this->fSysTimer; delete this->fGpuTimer; } void BenchTimer::start() { this->fSysTimer->startWall(); this->fGpuTimer->startGpu(); this->fSysTimer->startCpu(); } void BenchTimer::end() { this->fCpu = this->fSysTimer->endCpu(); //It is important to stop the cpu clocks first, //as the following will cpu wait for the gpu to finish. this->fGpu = this->fGpuTimer->endGpu(); this->fWall = this->fSysTimer->endWall(); }