user_counters_tabular_test.cc
Go to the documentation of this file.
1 
2 #undef NDEBUG
3 
4 #include "benchmark/benchmark.h"
5 #include "output_test.h"
6 
7 // @todo: <jpmag> this checks the full output at once; the rule for
8 // CounterSet1 was failing because it was not matching "^[-]+$".
9 // @todo: <jpmag> check that the counters are vertically aligned.
11 // keeping these lines long improves readability, so:
12 // clang-format off
13  {"^[-]+$", MR_Next},
14  {"^Benchmark %s Time %s CPU %s Iterations %s Bar %s Bat %s Baz %s Foo %s Frob %s Lob$", MR_Next},
15  {"^[-]+$", MR_Next},
16  {"^BM_Counters_Tabular/threads:%int %console_report [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat$", MR_Next},
17  {"^BM_Counters_Tabular/threads:%int %console_report [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat$", MR_Next},
18  {"^BM_Counters_Tabular/threads:%int %console_report [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat$", MR_Next},
19  {"^BM_Counters_Tabular/threads:%int %console_report [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat$", MR_Next},
20  {"^BM_Counters_Tabular/threads:%int %console_report [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat$", MR_Next},
21  {"^BM_CounterRates_Tabular/threads:%int %console_report [ ]*%hrfloat/s [ ]*%hrfloat/s [ ]*%hrfloat/s [ ]*%hrfloat/s [ ]*%hrfloat/s [ ]*%hrfloat/s$", MR_Next},
22  {"^BM_CounterRates_Tabular/threads:%int %console_report [ ]*%hrfloat/s [ ]*%hrfloat/s [ ]*%hrfloat/s [ ]*%hrfloat/s [ ]*%hrfloat/s [ ]*%hrfloat/s$", MR_Next},
23  {"^BM_CounterRates_Tabular/threads:%int %console_report [ ]*%hrfloat/s [ ]*%hrfloat/s [ ]*%hrfloat/s [ ]*%hrfloat/s [ ]*%hrfloat/s [ ]*%hrfloat/s$", MR_Next},
24  {"^BM_CounterRates_Tabular/threads:%int %console_report [ ]*%hrfloat/s [ ]*%hrfloat/s [ ]*%hrfloat/s [ ]*%hrfloat/s [ ]*%hrfloat/s [ ]*%hrfloat/s$", MR_Next},
25  {"^BM_CounterRates_Tabular/threads:%int %console_report [ ]*%hrfloat/s [ ]*%hrfloat/s [ ]*%hrfloat/s [ ]*%hrfloat/s [ ]*%hrfloat/s [ ]*%hrfloat/s$", MR_Next},
26  {"^[-]+$", MR_Next},
27  {"^Benchmark %s Time %s CPU %s Iterations %s Bar %s Baz %s Foo$", MR_Next},
28  {"^[-]+$", MR_Next},
29  {"^BM_CounterSet0_Tabular/threads:%int %console_report [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat$", MR_Next},
30  {"^BM_CounterSet0_Tabular/threads:%int %console_report [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat$", MR_Next},
31  {"^BM_CounterSet0_Tabular/threads:%int %console_report [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat$", MR_Next},
32  {"^BM_CounterSet0_Tabular/threads:%int %console_report [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat$", MR_Next},
33  {"^BM_CounterSet0_Tabular/threads:%int %console_report [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat$", MR_Next},
34  {"^BM_CounterSet1_Tabular/threads:%int %console_report [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat$", MR_Next},
35  {"^BM_CounterSet1_Tabular/threads:%int %console_report [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat$", MR_Next},
36  {"^BM_CounterSet1_Tabular/threads:%int %console_report [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat$", MR_Next},
37  {"^BM_CounterSet1_Tabular/threads:%int %console_report [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat$", MR_Next},
38  {"^BM_CounterSet1_Tabular/threads:%int %console_report [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat$", MR_Next},
39  {"^[-]+$", MR_Next},
40  {"^Benchmark %s Time %s CPU %s Iterations %s Bat %s Baz %s Foo$", MR_Next},
41  {"^[-]+$", MR_Next},
42  {"^BM_CounterSet2_Tabular/threads:%int %console_report [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat$", MR_Next},
43  {"^BM_CounterSet2_Tabular/threads:%int %console_report [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat$", MR_Next},
44  {"^BM_CounterSet2_Tabular/threads:%int %console_report [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat$", MR_Next},
45  {"^BM_CounterSet2_Tabular/threads:%int %console_report [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat$", MR_Next},
46  {"^BM_CounterSet2_Tabular/threads:%int %console_report [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat$"},
47 // clang-format on
48 });
49 ADD_CASES(TC_CSVOut, {{"%csv_header,"
50  "\"Bar\",\"Bat\",\"Baz\",\"Foo\",\"Frob\",\"Lob\""}});
51 
52 // ========================================================================= //
53 // ------------------------- Tabular Counters Output ----------------------- //
54 // ========================================================================= //
55 
57  while (state.KeepRunning()) {
58  }
59  namespace bm = benchmark;
60  state.counters.insert({
61  {"Foo", { 1, bm::Counter::kAvgThreads}},
62  {"Bar", { 2, bm::Counter::kAvgThreads}},
63  {"Baz", { 4, bm::Counter::kAvgThreads}},
64  {"Bat", { 8, bm::Counter::kAvgThreads}},
65  {"Frob", {16, bm::Counter::kAvgThreads}},
66  {"Lob", {32, bm::Counter::kAvgThreads}},
67  });
68 }
69 BENCHMARK(BM_Counters_Tabular)->ThreadRange(1, 16);
70 ADD_CASES(TC_JSONOut, {{"\"name\": \"BM_Counters_Tabular/threads:%int\",$"},
71  {"\"iterations\": %int,$", MR_Next},
72  {"\"real_time\": %int,$", MR_Next},
73  {"\"cpu_time\": %int,$", MR_Next},
74  {"\"time_unit\": \"ns\",$", MR_Next},
75  {"\"Bar\": %float,$", MR_Next},
76  {"\"Bat\": %float,$", MR_Next},
77  {"\"Baz\": %float,$", MR_Next},
78  {"\"Foo\": %float,$", MR_Next},
79  {"\"Frob\": %float,$", MR_Next},
80  {"\"Lob\": %float$", MR_Next},
81  {"}", MR_Next}});
82 ADD_CASES(TC_CSVOut, {{"^\"BM_Counters_Tabular/threads:%int\",%csv_report,"
83  "%float,%float,%float,%float,%float,%float$"}});
84 // VS2013 does not allow this function to be passed as a lambda argument
85 // to CHECK_BENCHMARK_RESULTS()
86 void CheckTabular(Results const& e) {
87  CHECK_COUNTER_VALUE(e, int, "Foo", EQ, 1);
88  CHECK_COUNTER_VALUE(e, int, "Bar", EQ, 2);
89  CHECK_COUNTER_VALUE(e, int, "Baz", EQ, 4);
90  CHECK_COUNTER_VALUE(e, int, "Bat", EQ, 8);
91  CHECK_COUNTER_VALUE(e, int, "Frob", EQ, 16);
92  CHECK_COUNTER_VALUE(e, int, "Lob", EQ, 32);
93 }
94 CHECK_BENCHMARK_RESULTS("BM_Counters_Tabular/threads:%int", &CheckTabular);
95 
96 // ========================================================================= //
97 // -------------------- Tabular+Rate Counters Output ----------------------- //
98 // ========================================================================= //
99 
101  while (state.KeepRunning()) {
102  }
103  namespace bm = benchmark;
104  state.counters.insert({
105  {"Foo", { 1, bm::Counter::kAvgThreadsRate}},
106  {"Bar", { 2, bm::Counter::kAvgThreadsRate}},
107  {"Baz", { 4, bm::Counter::kAvgThreadsRate}},
108  {"Bat", { 8, bm::Counter::kAvgThreadsRate}},
109  {"Frob", {16, bm::Counter::kAvgThreadsRate}},
110  {"Lob", {32, bm::Counter::kAvgThreadsRate}},
111  });
112 }
113 BENCHMARK(BM_CounterRates_Tabular)->ThreadRange(1, 16);
114 ADD_CASES(TC_JSONOut, {{"\"name\": \"BM_CounterRates_Tabular/threads:%int\",$"},
115  {"\"iterations\": %int,$", MR_Next},
116  {"\"real_time\": %int,$", MR_Next},
117  {"\"cpu_time\": %int,$", MR_Next},
118  {"\"time_unit\": \"ns\",$", MR_Next},
119  {"\"Bar\": %float,$", MR_Next},
120  {"\"Bat\": %float,$", MR_Next},
121  {"\"Baz\": %float,$", MR_Next},
122  {"\"Foo\": %float,$", MR_Next},
123  {"\"Frob\": %float,$", MR_Next},
124  {"\"Lob\": %float$", MR_Next},
125  {"}", MR_Next}});
126 ADD_CASES(TC_CSVOut, {{"^\"BM_CounterRates_Tabular/threads:%int\",%csv_report,"
127  "%float,%float,%float,%float,%float,%float$"}});
128 // VS2013 does not allow this function to be passed as a lambda argument
129 // to CHECK_BENCHMARK_RESULTS()
130 void CheckTabularRate(Results const& e) {
131  double t = e.DurationCPUTime();
132  CHECK_FLOAT_COUNTER_VALUE(e, "Foo", EQ, 1./t, 0.001);
133  CHECK_FLOAT_COUNTER_VALUE(e, "Bar", EQ, 2./t, 0.001);
134  CHECK_FLOAT_COUNTER_VALUE(e, "Baz", EQ, 4./t, 0.001);
135  CHECK_FLOAT_COUNTER_VALUE(e, "Bat", EQ, 8./t, 0.001);
136  CHECK_FLOAT_COUNTER_VALUE(e, "Frob", EQ, 16./t, 0.001);
137  CHECK_FLOAT_COUNTER_VALUE(e, "Lob", EQ, 32./t, 0.001);
138 }
139 CHECK_BENCHMARK_RESULTS("BM_CounterRates_Tabular/threads:%int",
141 
142 // ========================================================================= //
143 // ------------------------- Tabular Counters Output ----------------------- //
144 // ========================================================================= //
145 
146 // set only some of the counters
148  while (state.KeepRunning()) {
149  }
150  namespace bm = benchmark;
151  state.counters.insert({
152  {"Foo", {10, bm::Counter::kAvgThreads}},
153  {"Bar", {20, bm::Counter::kAvgThreads}},
154  {"Baz", {40, bm::Counter::kAvgThreads}},
155  });
156 }
157 BENCHMARK(BM_CounterSet0_Tabular)->ThreadRange(1, 16);
158 ADD_CASES(TC_JSONOut, {{"\"name\": \"BM_CounterSet0_Tabular/threads:%int\",$"},
159  {"\"iterations\": %int,$", MR_Next},
160  {"\"real_time\": %int,$", MR_Next},
161  {"\"cpu_time\": %int,$", MR_Next},
162  {"\"time_unit\": \"ns\",$", MR_Next},
163  {"\"Bar\": %float,$", MR_Next},
164  {"\"Baz\": %float,$", MR_Next},
165  {"\"Foo\": %float$", MR_Next},
166  {"}", MR_Next}});
167 ADD_CASES(TC_CSVOut, {{"^\"BM_CounterSet0_Tabular/threads:%int\",%csv_report,"
168  "%float,,%float,%float,,"}});
169 // VS2013 does not allow this function to be passed as a lambda argument
170 // to CHECK_BENCHMARK_RESULTS()
171 void CheckSet0(Results const& e) {
172  CHECK_COUNTER_VALUE(e, int, "Foo", EQ, 10);
173  CHECK_COUNTER_VALUE(e, int, "Bar", EQ, 20);
174  CHECK_COUNTER_VALUE(e, int, "Baz", EQ, 40);
175 }
176 CHECK_BENCHMARK_RESULTS("BM_CounterSet0_Tabular", &CheckSet0);
177 
178 // again.
180  while (state.KeepRunning()) {
181  }
182  namespace bm = benchmark;
183  state.counters.insert({
184  {"Foo", {15, bm::Counter::kAvgThreads}},
185  {"Bar", {25, bm::Counter::kAvgThreads}},
186  {"Baz", {45, bm::Counter::kAvgThreads}},
187  });
188 }
189 BENCHMARK(BM_CounterSet1_Tabular)->ThreadRange(1, 16);
190 ADD_CASES(TC_JSONOut, {{"\"name\": \"BM_CounterSet1_Tabular/threads:%int\",$"},
191  {"\"iterations\": %int,$", MR_Next},
192  {"\"real_time\": %int,$", MR_Next},
193  {"\"cpu_time\": %int,$", MR_Next},
194  {"\"time_unit\": \"ns\",$", MR_Next},
195  {"\"Bar\": %float,$", MR_Next},
196  {"\"Baz\": %float,$", MR_Next},
197  {"\"Foo\": %float$", MR_Next},
198  {"}", MR_Next}});
199 ADD_CASES(TC_CSVOut, {{"^\"BM_CounterSet1_Tabular/threads:%int\",%csv_report,"
200  "%float,,%float,%float,,"}});
201 // VS2013 does not allow this function to be passed as a lambda argument
202 // to CHECK_BENCHMARK_RESULTS()
203 void CheckSet1(Results const& e) {
204  CHECK_COUNTER_VALUE(e, int, "Foo", EQ, 15);
205  CHECK_COUNTER_VALUE(e, int, "Bar", EQ, 25);
206  CHECK_COUNTER_VALUE(e, int, "Baz", EQ, 45);
207 }
208 CHECK_BENCHMARK_RESULTS("BM_CounterSet1_Tabular/threads:%int", &CheckSet1);
209 
210 // ========================================================================= //
211 // ------------------------- Tabular Counters Output ----------------------- //
212 // ========================================================================= //
213 
214 // set only some of the counters, different set now.
216  while (state.KeepRunning()) {
217  }
218  namespace bm = benchmark;
219  state.counters.insert({
220  {"Foo", {10, bm::Counter::kAvgThreads}},
221  {"Bat", {30, bm::Counter::kAvgThreads}},
222  {"Baz", {40, bm::Counter::kAvgThreads}},
223  });
224 }
225 BENCHMARK(BM_CounterSet2_Tabular)->ThreadRange(1, 16);
226 ADD_CASES(TC_JSONOut, {{"\"name\": \"BM_CounterSet2_Tabular/threads:%int\",$"},
227  {"\"iterations\": %int,$", MR_Next},
228  {"\"real_time\": %int,$", MR_Next},
229  {"\"cpu_time\": %int,$", MR_Next},
230  {"\"time_unit\": \"ns\",$", MR_Next},
231  {"\"Bat\": %float,$", MR_Next},
232  {"\"Baz\": %float,$", MR_Next},
233  {"\"Foo\": %float$", MR_Next},
234  {"}", MR_Next}});
235 ADD_CASES(TC_CSVOut, {{"^\"BM_CounterSet2_Tabular/threads:%int\",%csv_report,"
236  ",%float,%float,%float,,"}});
237 // VS2013 does not allow this function to be passed as a lambda argument
238 // to CHECK_BENCHMARK_RESULTS()
239 void CheckSet2(Results const& e) {
240  CHECK_COUNTER_VALUE(e, int, "Foo", EQ, 10);
241  CHECK_COUNTER_VALUE(e, int, "Bat", EQ, 30);
242  CHECK_COUNTER_VALUE(e, int, "Baz", EQ, 40);
243 }
244 CHECK_BENCHMARK_RESULTS("BM_CounterSet2_Tabular", &CheckSet2);
245 
246 // ========================================================================= //
247 // --------------------------- TEST CASES END ------------------------------ //
248 // ========================================================================= //
249 
250 int main(int argc, char* argv[]) { RunOutputTests(argc, argv); }
Results::DurationCPUTime
double DurationCPUTime() const
Definition: output_test.h:108
CHECK_BENCHMARK_RESULTS
CHECK_BENCHMARK_RESULTS("BM_Counters_Tabular/threads:%int", &CheckTabular)
BM_CounterSet0_Tabular
void BM_CounterSet0_Tabular(benchmark::State &state)
Definition: user_counters_tabular_test.cc:147
main
int main(int argc, char *argv[])
Definition: user_counters_tabular_test.cc:250
benchmark
Definition: benchmark.h:241
CheckTabular
void CheckTabular(Results const &e)
Definition: user_counters_tabular_test.cc:86
TC_ConsoleOut
@ TC_ConsoleOut
Definition: output_test.h:41
benchmark::State::counters
UserCounters counters
Definition: benchmark.h:553
CheckSet2
void CheckSet2(Results const &e)
Definition: user_counters_tabular_test.cc:239
output_test.h
BM_CounterRates_Tabular
void BM_CounterRates_Tabular(benchmark::State &state)
Definition: user_counters_tabular_test.cc:100
Results
Definition: output_test.h:85
BM_Counters_Tabular
void BM_Counters_Tabular(benchmark::State &state)
Definition: user_counters_tabular_test.cc:56
CHECK_COUNTER_VALUE
#define CHECK_COUNTER_VALUE(entry, var_type, var_name, relationship, value)
Definition: output_test.h:182
BENCHMARK
BENCHMARK(BM_Counters_Tabular) -> ThreadRange(1, 16)
BM_CounterSet1_Tabular
void BM_CounterSet1_Tabular(benchmark::State &state)
Definition: user_counters_tabular_test.cc:179
TC_JSONOut
@ TC_JSONOut
Definition: output_test.h:43
MR_Next
@ MR_Next
Definition: output_test.h:26
benchmark::State::KeepRunning
bool KeepRunning()
Definition: benchmark.h:404
RunOutputTests
void RunOutputTests(int argc, char *argv[])
Definition: output_test_helper.cc:367
BM_CounterSet2_Tabular
void BM_CounterSet2_Tabular(benchmark::State &state)
Definition: user_counters_tabular_test.cc:215
ADD_CASES
ADD_CASES(TC_ConsoleOut, { {"^[-]+$", MR_Next}, {"^Benchmark %s Time %s CPU %s Iterations %s Bar %s Bat %s Baz %s Foo %s Frob %s Lob$", MR_Next}, {"^[-]+$", MR_Next}, {"^BM_Counters_Tabular/threads:%int %console_report [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat$", MR_Next}, {"^BM_Counters_Tabular/threads:%int %console_report [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat$", MR_Next}, {"^BM_Counters_Tabular/threads:%int %console_report [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat$", MR_Next}, {"^BM_Counters_Tabular/threads:%int %console_report [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat$", MR_Next}, {"^BM_Counters_Tabular/threads:%int %console_report [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat$", MR_Next}, {"^BM_CounterRates_Tabular/threads:%int %console_report [ ]*%hrfloat/s [ ]*%hrfloat/s [ ]*%hrfloat/s [ ]*%hrfloat/s [ ]*%hrfloat/s [ ]*%hrfloat/s$", MR_Next}, {"^BM_CounterRates_Tabular/threads:%int %console_report [ ]*%hrfloat/s [ ]*%hrfloat/s [ ]*%hrfloat/s [ ]*%hrfloat/s [ ]*%hrfloat/s [ ]*%hrfloat/s$", MR_Next}, {"^BM_CounterRates_Tabular/threads:%int %console_report [ ]*%hrfloat/s [ ]*%hrfloat/s [ ]*%hrfloat/s [ ]*%hrfloat/s [ ]*%hrfloat/s [ ]*%hrfloat/s$", MR_Next}, {"^BM_CounterRates_Tabular/threads:%int %console_report [ ]*%hrfloat/s [ ]*%hrfloat/s [ ]*%hrfloat/s [ ]*%hrfloat/s [ ]*%hrfloat/s [ ]*%hrfloat/s$", MR_Next}, {"^BM_CounterRates_Tabular/threads:%int %console_report [ ]*%hrfloat/s [ ]*%hrfloat/s [ ]*%hrfloat/s [ ]*%hrfloat/s [ ]*%hrfloat/s [ ]*%hrfloat/s$", MR_Next}, {"^[-]+$", MR_Next}, {"^Benchmark %s Time %s CPU %s Iterations %s Bar %s Baz %s Foo$", MR_Next}, {"^[-]+$", MR_Next}, {"^BM_CounterSet0_Tabular/threads:%int %console_report [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat$", MR_Next}, {"^BM_CounterSet0_Tabular/threads:%int %console_report [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat$", MR_Next}, {"^BM_CounterSet0_Tabular/threads:%int %console_report [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat$", MR_Next}, {"^BM_CounterSet0_Tabular/threads:%int %console_report [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat$", MR_Next}, {"^BM_CounterSet0_Tabular/threads:%int %console_report [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat$", MR_Next}, {"^BM_CounterSet1_Tabular/threads:%int %console_report [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat$", MR_Next}, {"^BM_CounterSet1_Tabular/threads:%int %console_report [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat$", MR_Next}, {"^BM_CounterSet1_Tabular/threads:%int %console_report [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat$", MR_Next}, {"^BM_CounterSet1_Tabular/threads:%int %console_report [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat$", MR_Next}, {"^BM_CounterSet1_Tabular/threads:%int %console_report [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat$", MR_Next}, {"^[-]+$", MR_Next}, {"^Benchmark %s Time %s CPU %s Iterations %s Bat %s Baz %s Foo$", MR_Next}, {"^[-]+$", MR_Next}, {"^BM_CounterSet2_Tabular/threads:%int %console_report [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat$", MR_Next}, {"^BM_CounterSet2_Tabular/threads:%int %console_report [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat$", MR_Next}, {"^BM_CounterSet2_Tabular/threads:%int %console_report [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat$", MR_Next}, {"^BM_CounterSet2_Tabular/threads:%int %console_report [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat$", MR_Next}, {"^BM_CounterSet2_Tabular/threads:%int %console_report [ ]*%hrfloat [ ]*%hrfloat [ ]*%hrfloat$"}, })
CheckSet0
void CheckSet0(Results const &e)
Definition: user_counters_tabular_test.cc:171
benchmark::State
Definition: benchmark.h:399
CheckSet1
void CheckSet1(Results const &e)
Definition: user_counters_tabular_test.cc:203
TC_CSVOut
@ TC_CSVOut
Definition: output_test.h:45
CheckTabularRate
void CheckTabularRate(Results const &e)
Definition: user_counters_tabular_test.cc:130
benchmark.h
CHECK_FLOAT_COUNTER_VALUE
#define CHECK_FLOAT_COUNTER_VALUE(entry, var_name, relationship, value, eps_factor)
Definition: output_test.h:188


libaditof
Author(s):
autogenerated on Wed May 21 2025 02:07:01