C++程序  |  49行  |  1.14 KB

#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();
}