OLD | NEW |
| (Empty) |
1 | |
2 /* | |
3 * Copyright 2012 Google Inc. | |
4 * | |
5 * Use of this source code is governed by a BSD-style license that can be | |
6 * found in the LICENSE file. | |
7 */ | |
8 | |
9 #ifndef TimerData_DEFINED | |
10 #define TimerData_DEFINED | |
11 | |
12 #include "SkString.h" | |
13 #include "SkTemplates.h" | |
14 | |
15 #ifdef SK_BUILD_FOR_WIN | |
16 #pragma warning(push) | |
17 #pragma warning(disable : 4530) | |
18 #endif | |
19 | |
20 #include "SkJSONCPP.h" | |
21 | |
22 #ifdef SK_BUILD_FOR_WIN | |
23 #pragma warning(pop) | |
24 #endif | |
25 | |
26 class BenchTimer; | |
27 | |
28 class TimerData { | |
29 public: | |
30 /** | |
31 * Constructs a TimerData to hold at most maxNumTimings sets of elapsed time
r values. | |
32 **/ | |
33 explicit TimerData(int maxNumTimings); | |
34 | |
35 /** | |
36 * Collect times from the BenchTimer for an iteration. It will fail if calle
d more often than | |
37 * indicated in the constructor. | |
38 * | |
39 * @param BenchTimer Must not be null. | |
40 */ | |
41 bool appendTimes(BenchTimer*); | |
42 | |
43 enum Result { | |
44 kMin_Result, | |
45 kAvg_Result, | |
46 kPerIter_Result | |
47 }; | |
48 | |
49 enum TimerFlags { | |
50 kWall_Flag = 0x1, | |
51 kTruncatedWall_Flag = 0x2, | |
52 kCpu_Flag = 0x4, | |
53 kTruncatedCpu_Flag = 0x8, | |
54 kGpu_Flag = 0x10 | |
55 }; | |
56 | |
57 /** | |
58 * Gets the timer data results as a string. | |
59 * @param doubleFormat printf-style format for doubles (e.g. "%02d") | |
60 * @param result the type of result desired | |
61 * @param the name of the config being timed (prepended to results string) | |
62 * @param timerFlags bitfield of TimerFlags values indicating which timers s
hould be reported. | |
63 * @param itersPerTiming the number of test/bench iterations that correspond
to each | |
64 * appendTimes() call, 1 when appendTimes is called for each iteratio
n. | |
65 */ | |
66 SkString getResult(const char* doubleFormat, | |
67 Result result, | |
68 const char* configName, | |
69 uint32_t timerFlags, | |
70 int itersPerTiming = 1); | |
71 Json::Value getJSON(uint32_t timerFlags, | |
72 Result result, | |
73 int itersPerTiming = 1); | |
74 | |
75 private: | |
76 int fMaxNumTimings; | |
77 int fCurrTiming; | |
78 | |
79 SkAutoTArray<double> fWallTimes; | |
80 SkAutoTArray<double> fTruncatedWallTimes; | |
81 SkAutoTArray<double> fCpuTimes; | |
82 SkAutoTArray<double> fTruncatedCpuTimes; | |
83 SkAutoTArray<double> fGpuTimes; | |
84 }; | |
85 | |
86 #endif // TimerData_DEFINED | |
OLD | NEW |