diff options
Diffstat (limited to 'bench/BenchTimer.cpp')
-rw-r--r-- | bench/BenchTimer.cpp | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/bench/BenchTimer.cpp b/bench/BenchTimer.cpp new file mode 100644 index 0000000..e7b0068 --- /dev/null +++ b/bench/BenchTimer.cpp @@ -0,0 +1,48 @@ +#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(); +} |