/* * Copyright 2012 Google Inc. * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #ifndef TimerData_DEFINED #define TimerData_DEFINED #include "SkString.h" #include "SkTemplates.h" class BenchTimer; class TimerData { public: /** * Constructs a TimerData to hold at most maxNumTimings sets of elapsed timer values. **/ explicit TimerData(int maxNumTimings); /** * Collect times from the BenchTimer for an iteration. It will fail if called more often than * indicated in the constructor. * * @param BenchTimer Must not be null. */ bool appendTimes(BenchTimer*); enum Result { kMin_Result, kAvg_Result, kPerIter_Result }; enum TimerFlags { kWall_Flag = 0x1, kTruncatedWall_Flag = 0x2, kCpu_Flag = 0x4, kTruncatedCpu_Flag = 0x8, kGpu_Flag = 0x10 }; /** * Gets the timer data results as a string. * @param doubleFormat printf-style format for doubles (e.g. "%02d") * @param result the type of result desired * @param the name of the config being timed (prepended to results string) * @param timerFlags bitfield of TimerFlags values indicating which timers should be reported. * @param itersPerTiming the number of test/bench iterations that correspond to each * appendTimes() call, 1 when appendTimes is called for each iteration. */ SkString getResult(const char* doubleFormat, Result result, const char* configName, uint32_t timerFlags, int itersPerTiming = 1); private: int fMaxNumTimings; int fCurrTiming; SkAutoTArray fWallTimes; SkAutoTArray fTruncatedWallTimes; SkAutoTArray fCpuTimes; SkAutoTArray fTruncatedCpuTimes; SkAutoTArray fGpuTimes; }; #endif // TimerData_DEFINED