Index: bench/TimerData.h |
diff --git a/bench/TimerData.h b/bench/TimerData.h |
index d97a0632aadf2eaff86e76123d22e2719174518c..ed0ee473c18133e4f6a5372bccad48c0caa475f1 100644 |
--- a/bench/TimerData.h |
+++ b/bench/TimerData.h |
@@ -10,37 +10,64 @@ |
#define TimerData_DEFINED |
#include "SkString.h" |
+#include "SkTemplates.h" |
+ |
class BenchTimer; |
class TimerData { |
public: |
- TimerData(const SkString& perIterTimeFormat, const SkString& normalTimeFormat); |
+ /** |
+ * Constructs a TimerData to hold at most maxNumTimings sets of elapsed timer values. |
+ **/ |
+ explicit TimerData(int maxNumTimings); |
/** |
- * Append the value from each timer in BenchTimer to our various strings, and update the |
- * minimum and sum times. |
+ * 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. |
- * @param last True if this is the last set of times to add. |
*/ |
- void appendTimes(BenchTimer*, bool last); |
- SkString getResult(bool logPerIter, bool printMin, int repeatDraw, const char* configName, |
- bool showWallTime, bool showTruncatedWallTime, bool showCpuTime, |
- bool showTruncatedCpuTime, bool showGpuTime); |
+ 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: |
- SkString fWallStr; |
- SkString fTruncatedWallStr; |
- SkString fCpuStr; |
- SkString fTruncatedCpuStr; |
- SkString fGpuStr; |
- double fWallSum, fWallMin; |
- double fTruncatedWallSum, fTruncatedWallMin; |
- double fCpuSum, fCpuMin; |
- double fTruncatedCpuSum, fTruncatedCpuMin; |
- double fGpuSum, fGpuMin; |
- |
- SkString fPerIterTimeFormat; |
- SkString fNormalTimeFormat; |
+ int fMaxNumTimings; |
+ int fCurrTiming; |
+ |
+ SkAutoTArray<double> fWallTimes; |
+ SkAutoTArray<double> fTruncatedWallTimes; |
+ SkAutoTArray<double> fCpuTimes; |
+ SkAutoTArray<double> fTruncatedCpuTimes; |
+ SkAutoTArray<double> fGpuTimes; |
}; |
#endif // TimerData_DEFINED |