| |
| /* |
| * 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 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); |
| #ifdef SK_BUILD_JSON_WRITER |
| Json::Value getJSON(uint32_t timerFlags, |
| Result result, |
| int itersPerTiming = 1); |
| #endif // SK_BUILD_JSON_WRITER |
| |
| private: |
| int fMaxNumTimings; |
| int fCurrTiming; |
| |
| SkAutoTArray<double> fWallTimes; |
| SkAutoTArray<double> fTruncatedWallTimes; |
| SkAutoTArray<double> fCpuTimes; |
| SkAutoTArray<double> fTruncatedCpuTimes; |
| SkAutoTArray<double> fGpuTimes; |
| }; |
| |
| #endif // TimerData_DEFINED |