| /* | |
| * 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" | |
| #ifdef SK_BUILD_FOR_WIN | |
| #pragma warning(push) | |
| #pragma warning(disable : 4530) | |
| #endif | |
| #include "SkJSONCPP.h" | |
| #ifdef SK_BUILD_FOR_WIN | |
| #pragma warning(pop) | |
| #endif | |
| class Timer; | |
| class TimerData { | |
| public: | |
| /** | |
| * Constructs a TimerData to hold at most maxNumTimings sets of elapsed timer values. | |
| **/ | |
| explicit TimerData(int maxNumTimings); | |
| /** | |
| * Collect times from the Timer for an iteration. It will fail if called more often than | |
| * indicated in the constructor. | |
| * | |
| * @param Timer Must not be null. | |
| */ | |
| bool appendTimes(Timer*); | |
| 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); | |
| Json::Value getJSON(uint32_t timerFlags, | |
| Result result, | |
| int itersPerTiming = 1); | |
| private: | |
| int fMaxNumTimings; | |
| int fCurrTiming; | |
| SkAutoTArray<double> fWallTimes; | |
| SkAutoTArray<double> fTruncatedWallTimes; | |
| SkAutoTArray<double> fCpuTimes; | |
| SkAutoTArray<double> fTruncatedCpuTimes; | |
| SkAutoTArray<double> fGpuTimes; | |
| }; | |
| #endif // TimerData_DEFINED |