15dda2efdSMircea Trofin
25dda2efdSMircea Trofin #undef NDEBUG
3a290770fSMircea Trofin #include <numeric>
45dda2efdSMircea Trofin #include <utility>
55dda2efdSMircea Trofin
65dda2efdSMircea Trofin #include "benchmark/benchmark.h"
75dda2efdSMircea Trofin #include "output_test.h"
85dda2efdSMircea Trofin
95dda2efdSMircea Trofin // ========================================================================= //
105dda2efdSMircea Trofin // ---------------------- Testing Prologue Output -------------------------- //
115dda2efdSMircea Trofin // ========================================================================= //
125dda2efdSMircea Trofin
135dda2efdSMircea Trofin ADD_CASES(TC_ConsoleOut, {{"^[-]+$", MR_Next},
145dda2efdSMircea Trofin {"^Benchmark %s Time %s CPU %s Iterations$", MR_Next},
155dda2efdSMircea Trofin {"^[-]+$", MR_Next}});
AddContextCases()165dda2efdSMircea Trofin static int AddContextCases() {
175dda2efdSMircea Trofin AddCases(TC_ConsoleErr,
185dda2efdSMircea Trofin {
195dda2efdSMircea Trofin {"^%int-%int-%intT%int:%int:%int[-+]%int:%int$", MR_Default},
20*a5b79717SMircea Trofin {"Running .*(/|\\\\)reporter_output_test(\\.exe)?$", MR_Next},
215dda2efdSMircea Trofin {"Run on \\(%int X %float MHz CPU s?\\)", MR_Next},
225dda2efdSMircea Trofin });
235dda2efdSMircea Trofin AddCases(TC_JSONOut,
245dda2efdSMircea Trofin {{"^\\{", MR_Default},
255dda2efdSMircea Trofin {"\"context\":", MR_Next},
265dda2efdSMircea Trofin {"\"date\": \"", MR_Next},
275dda2efdSMircea Trofin {"\"host_name\":", MR_Next},
285dda2efdSMircea Trofin {"\"executable\": \".*(/|\\\\)reporter_output_test(\\.exe)?\",",
295dda2efdSMircea Trofin MR_Next},
305dda2efdSMircea Trofin {"\"num_cpus\": %int,$", MR_Next},
315dda2efdSMircea Trofin {"\"mhz_per_cpu\": %float,$", MR_Next},
325dda2efdSMircea Trofin {"\"caches\": \\[$", MR_Default}});
335dda2efdSMircea Trofin auto const& Info = benchmark::CPUInfo::Get();
345dda2efdSMircea Trofin auto const& Caches = Info.caches;
355dda2efdSMircea Trofin if (!Caches.empty()) {
365dda2efdSMircea Trofin AddCases(TC_ConsoleErr, {{"CPU Caches:$", MR_Next}});
375dda2efdSMircea Trofin }
385dda2efdSMircea Trofin for (size_t I = 0; I < Caches.size(); ++I) {
395dda2efdSMircea Trofin std::string num_caches_str =
405dda2efdSMircea Trofin Caches[I].num_sharing != 0 ? " \\(x%int\\)$" : "$";
415dda2efdSMircea Trofin AddCases(TC_ConsoleErr,
425dda2efdSMircea Trofin {{"L%int (Data|Instruction|Unified) %int KiB" + num_caches_str,
435dda2efdSMircea Trofin MR_Next}});
445dda2efdSMircea Trofin AddCases(TC_JSONOut, {{"\\{$", MR_Next},
455dda2efdSMircea Trofin {"\"type\": \"", MR_Next},
465dda2efdSMircea Trofin {"\"level\": %int,$", MR_Next},
475dda2efdSMircea Trofin {"\"size\": %int,$", MR_Next},
485dda2efdSMircea Trofin {"\"num_sharing\": %int$", MR_Next},
495dda2efdSMircea Trofin {"}[,]{0,1}$", MR_Next}});
505dda2efdSMircea Trofin }
515dda2efdSMircea Trofin AddCases(TC_JSONOut, {{"],$"}});
525dda2efdSMircea Trofin auto const& LoadAvg = Info.load_avg;
535dda2efdSMircea Trofin if (!LoadAvg.empty()) {
545dda2efdSMircea Trofin AddCases(TC_ConsoleErr,
555dda2efdSMircea Trofin {{"Load Average: (%float, ){0,2}%float$", MR_Next}});
565dda2efdSMircea Trofin }
575dda2efdSMircea Trofin AddCases(TC_JSONOut, {{"\"load_avg\": \\[(%float,?){0,3}],$", MR_Next}});
58*a5b79717SMircea Trofin AddCases(TC_JSONOut, {{"\"library_version\": \".*\",$", MR_Next}});
59*a5b79717SMircea Trofin AddCases(TC_JSONOut, {{"\"library_build_type\": \".*\",$", MR_Next}});
60*a5b79717SMircea Trofin AddCases(TC_JSONOut, {{"\"json_schema_version\": 1$", MR_Next}});
615dda2efdSMircea Trofin return 0;
625dda2efdSMircea Trofin }
635dda2efdSMircea Trofin int dummy_register = AddContextCases();
645dda2efdSMircea Trofin ADD_CASES(TC_CSVOut, {{"%csv_header"}});
655dda2efdSMircea Trofin
665dda2efdSMircea Trofin // ========================================================================= //
675dda2efdSMircea Trofin // ------------------------ Testing Basic Output --------------------------- //
685dda2efdSMircea Trofin // ========================================================================= //
695dda2efdSMircea Trofin
BM_basic(benchmark::State & state)705dda2efdSMircea Trofin void BM_basic(benchmark::State& state) {
715dda2efdSMircea Trofin for (auto _ : state) {
725dda2efdSMircea Trofin }
735dda2efdSMircea Trofin }
745dda2efdSMircea Trofin BENCHMARK(BM_basic);
755dda2efdSMircea Trofin
765dda2efdSMircea Trofin ADD_CASES(TC_ConsoleOut, {{"^BM_basic %console_report$"}});
775dda2efdSMircea Trofin ADD_CASES(TC_JSONOut, {{"\"name\": \"BM_basic\",$"},
785dda2efdSMircea Trofin {"\"family_index\": 0,$", MR_Next},
795dda2efdSMircea Trofin {"\"per_family_instance_index\": 0,$", MR_Next},
805dda2efdSMircea Trofin {"\"run_name\": \"BM_basic\",$", MR_Next},
815dda2efdSMircea Trofin {"\"run_type\": \"iteration\",$", MR_Next},
825dda2efdSMircea Trofin {"\"repetitions\": 1,$", MR_Next},
835dda2efdSMircea Trofin {"\"repetition_index\": 0,$", MR_Next},
845dda2efdSMircea Trofin {"\"threads\": 1,$", MR_Next},
855dda2efdSMircea Trofin {"\"iterations\": %int,$", MR_Next},
865dda2efdSMircea Trofin {"\"real_time\": %float,$", MR_Next},
875dda2efdSMircea Trofin {"\"cpu_time\": %float,$", MR_Next},
885dda2efdSMircea Trofin {"\"time_unit\": \"ns\"$", MR_Next},
895dda2efdSMircea Trofin {"}", MR_Next}});
905dda2efdSMircea Trofin ADD_CASES(TC_CSVOut, {{"^\"BM_basic\",%csv_report$"}});
915dda2efdSMircea Trofin
925dda2efdSMircea Trofin // ========================================================================= //
935dda2efdSMircea Trofin // ------------------------ Testing Bytes per Second Output ---------------- //
945dda2efdSMircea Trofin // ========================================================================= //
955dda2efdSMircea Trofin
BM_bytes_per_second(benchmark::State & state)965dda2efdSMircea Trofin void BM_bytes_per_second(benchmark::State& state) {
975dda2efdSMircea Trofin for (auto _ : state) {
985dda2efdSMircea Trofin // This test requires a non-zero CPU time to avoid divide-by-zero
99*a5b79717SMircea Trofin auto iterations = double(state.iterations()) * double(state.iterations());
100*a5b79717SMircea Trofin benchmark::DoNotOptimize(iterations);
1015dda2efdSMircea Trofin }
1025dda2efdSMircea Trofin state.SetBytesProcessed(1);
1035dda2efdSMircea Trofin }
1045dda2efdSMircea Trofin BENCHMARK(BM_bytes_per_second);
1055dda2efdSMircea Trofin
1065dda2efdSMircea Trofin ADD_CASES(TC_ConsoleOut, {{"^BM_bytes_per_second %console_report "
1075dda2efdSMircea Trofin "bytes_per_second=%float[kM]{0,1}/s$"}});
1085dda2efdSMircea Trofin ADD_CASES(TC_JSONOut, {{"\"name\": \"BM_bytes_per_second\",$"},
1095dda2efdSMircea Trofin {"\"family_index\": 1,$", MR_Next},
1105dda2efdSMircea Trofin {"\"per_family_instance_index\": 0,$", MR_Next},
1115dda2efdSMircea Trofin {"\"run_name\": \"BM_bytes_per_second\",$", MR_Next},
1125dda2efdSMircea Trofin {"\"run_type\": \"iteration\",$", MR_Next},
1135dda2efdSMircea Trofin {"\"repetitions\": 1,$", MR_Next},
1145dda2efdSMircea Trofin {"\"repetition_index\": 0,$", MR_Next},
1155dda2efdSMircea Trofin {"\"threads\": 1,$", MR_Next},
1165dda2efdSMircea Trofin {"\"iterations\": %int,$", MR_Next},
1175dda2efdSMircea Trofin {"\"real_time\": %float,$", MR_Next},
1185dda2efdSMircea Trofin {"\"cpu_time\": %float,$", MR_Next},
1195dda2efdSMircea Trofin {"\"time_unit\": \"ns\",$", MR_Next},
1205dda2efdSMircea Trofin {"\"bytes_per_second\": %float$", MR_Next},
1215dda2efdSMircea Trofin {"}", MR_Next}});
1225dda2efdSMircea Trofin ADD_CASES(TC_CSVOut, {{"^\"BM_bytes_per_second\",%csv_bytes_report$"}});
1235dda2efdSMircea Trofin
1245dda2efdSMircea Trofin // ========================================================================= //
1255dda2efdSMircea Trofin // ------------------------ Testing Items per Second Output ---------------- //
1265dda2efdSMircea Trofin // ========================================================================= //
1275dda2efdSMircea Trofin
BM_items_per_second(benchmark::State & state)1285dda2efdSMircea Trofin void BM_items_per_second(benchmark::State& state) {
1295dda2efdSMircea Trofin for (auto _ : state) {
1305dda2efdSMircea Trofin // This test requires a non-zero CPU time to avoid divide-by-zero
131*a5b79717SMircea Trofin auto iterations = double(state.iterations()) * double(state.iterations());
132*a5b79717SMircea Trofin benchmark::DoNotOptimize(iterations);
1335dda2efdSMircea Trofin }
1345dda2efdSMircea Trofin state.SetItemsProcessed(1);
1355dda2efdSMircea Trofin }
1365dda2efdSMircea Trofin BENCHMARK(BM_items_per_second);
1375dda2efdSMircea Trofin
1385dda2efdSMircea Trofin ADD_CASES(TC_ConsoleOut, {{"^BM_items_per_second %console_report "
1395dda2efdSMircea Trofin "items_per_second=%float[kM]{0,1}/s$"}});
1405dda2efdSMircea Trofin ADD_CASES(TC_JSONOut, {{"\"name\": \"BM_items_per_second\",$"},
1415dda2efdSMircea Trofin {"\"family_index\": 2,$", MR_Next},
1425dda2efdSMircea Trofin {"\"per_family_instance_index\": 0,$", MR_Next},
1435dda2efdSMircea Trofin {"\"run_name\": \"BM_items_per_second\",$", MR_Next},
1445dda2efdSMircea Trofin {"\"run_type\": \"iteration\",$", MR_Next},
1455dda2efdSMircea Trofin {"\"repetitions\": 1,$", MR_Next},
1465dda2efdSMircea Trofin {"\"repetition_index\": 0,$", MR_Next},
1475dda2efdSMircea Trofin {"\"threads\": 1,$", MR_Next},
1485dda2efdSMircea Trofin {"\"iterations\": %int,$", MR_Next},
1495dda2efdSMircea Trofin {"\"real_time\": %float,$", MR_Next},
1505dda2efdSMircea Trofin {"\"cpu_time\": %float,$", MR_Next},
1515dda2efdSMircea Trofin {"\"time_unit\": \"ns\",$", MR_Next},
1525dda2efdSMircea Trofin {"\"items_per_second\": %float$", MR_Next},
1535dda2efdSMircea Trofin {"}", MR_Next}});
1545dda2efdSMircea Trofin ADD_CASES(TC_CSVOut, {{"^\"BM_items_per_second\",%csv_items_report$"}});
1555dda2efdSMircea Trofin
1565dda2efdSMircea Trofin // ========================================================================= //
1575dda2efdSMircea Trofin // ------------------------ Testing Label Output --------------------------- //
1585dda2efdSMircea Trofin // ========================================================================= //
1595dda2efdSMircea Trofin
BM_label(benchmark::State & state)1605dda2efdSMircea Trofin void BM_label(benchmark::State& state) {
1615dda2efdSMircea Trofin for (auto _ : state) {
1625dda2efdSMircea Trofin }
1635dda2efdSMircea Trofin state.SetLabel("some label");
1645dda2efdSMircea Trofin }
1655dda2efdSMircea Trofin BENCHMARK(BM_label);
1665dda2efdSMircea Trofin
1675dda2efdSMircea Trofin ADD_CASES(TC_ConsoleOut, {{"^BM_label %console_report some label$"}});
1685dda2efdSMircea Trofin ADD_CASES(TC_JSONOut, {{"\"name\": \"BM_label\",$"},
1695dda2efdSMircea Trofin {"\"family_index\": 3,$", MR_Next},
1705dda2efdSMircea Trofin {"\"per_family_instance_index\": 0,$", MR_Next},
1715dda2efdSMircea Trofin {"\"run_name\": \"BM_label\",$", MR_Next},
1725dda2efdSMircea Trofin {"\"run_type\": \"iteration\",$", MR_Next},
1735dda2efdSMircea Trofin {"\"repetitions\": 1,$", MR_Next},
1745dda2efdSMircea Trofin {"\"repetition_index\": 0,$", MR_Next},
1755dda2efdSMircea Trofin {"\"threads\": 1,$", MR_Next},
1765dda2efdSMircea Trofin {"\"iterations\": %int,$", MR_Next},
1775dda2efdSMircea Trofin {"\"real_time\": %float,$", MR_Next},
1785dda2efdSMircea Trofin {"\"cpu_time\": %float,$", MR_Next},
1795dda2efdSMircea Trofin {"\"time_unit\": \"ns\",$", MR_Next},
1805dda2efdSMircea Trofin {"\"label\": \"some label\"$", MR_Next},
1815dda2efdSMircea Trofin {"}", MR_Next}});
1825dda2efdSMircea Trofin ADD_CASES(TC_CSVOut, {{"^\"BM_label\",%csv_label_report_begin\"some "
1835dda2efdSMircea Trofin "label\"%csv_label_report_end$"}});
1845dda2efdSMircea Trofin
1855dda2efdSMircea Trofin // ========================================================================= //
1865dda2efdSMircea Trofin // ------------------------ Testing Time Label Output ---------------------- //
1875dda2efdSMircea Trofin // ========================================================================= //
1885dda2efdSMircea Trofin
BM_time_label_nanosecond(benchmark::State & state)1895dda2efdSMircea Trofin void BM_time_label_nanosecond(benchmark::State& state) {
1905dda2efdSMircea Trofin for (auto _ : state) {
1915dda2efdSMircea Trofin }
1925dda2efdSMircea Trofin }
1935dda2efdSMircea Trofin BENCHMARK(BM_time_label_nanosecond)->Unit(benchmark::kNanosecond);
1945dda2efdSMircea Trofin
1955dda2efdSMircea Trofin ADD_CASES(TC_ConsoleOut, {{"^BM_time_label_nanosecond %console_report$"}});
1965dda2efdSMircea Trofin ADD_CASES(TC_JSONOut,
1975dda2efdSMircea Trofin {{"\"name\": \"BM_time_label_nanosecond\",$"},
1985dda2efdSMircea Trofin {"\"family_index\": 4,$", MR_Next},
1995dda2efdSMircea Trofin {"\"per_family_instance_index\": 0,$", MR_Next},
2005dda2efdSMircea Trofin {"\"run_name\": \"BM_time_label_nanosecond\",$", MR_Next},
2015dda2efdSMircea Trofin {"\"run_type\": \"iteration\",$", MR_Next},
2025dda2efdSMircea Trofin {"\"repetitions\": 1,$", MR_Next},
2035dda2efdSMircea Trofin {"\"repetition_index\": 0,$", MR_Next},
2045dda2efdSMircea Trofin {"\"threads\": 1,$", MR_Next},
2055dda2efdSMircea Trofin {"\"iterations\": %int,$", MR_Next},
2065dda2efdSMircea Trofin {"\"real_time\": %float,$", MR_Next},
2075dda2efdSMircea Trofin {"\"cpu_time\": %float,$", MR_Next},
2085dda2efdSMircea Trofin {"\"time_unit\": \"ns\"$", MR_Next},
2095dda2efdSMircea Trofin {"}", MR_Next}});
2105dda2efdSMircea Trofin ADD_CASES(TC_CSVOut, {{"^\"BM_time_label_nanosecond\",%csv_report$"}});
2115dda2efdSMircea Trofin
BM_time_label_microsecond(benchmark::State & state)2125dda2efdSMircea Trofin void BM_time_label_microsecond(benchmark::State& state) {
2135dda2efdSMircea Trofin for (auto _ : state) {
2145dda2efdSMircea Trofin }
2155dda2efdSMircea Trofin }
2165dda2efdSMircea Trofin BENCHMARK(BM_time_label_microsecond)->Unit(benchmark::kMicrosecond);
2175dda2efdSMircea Trofin
2185dda2efdSMircea Trofin ADD_CASES(TC_ConsoleOut, {{"^BM_time_label_microsecond %console_us_report$"}});
2195dda2efdSMircea Trofin ADD_CASES(TC_JSONOut,
2205dda2efdSMircea Trofin {{"\"name\": \"BM_time_label_microsecond\",$"},
2215dda2efdSMircea Trofin {"\"family_index\": 5,$", MR_Next},
2225dda2efdSMircea Trofin {"\"per_family_instance_index\": 0,$", MR_Next},
2235dda2efdSMircea Trofin {"\"run_name\": \"BM_time_label_microsecond\",$", MR_Next},
2245dda2efdSMircea Trofin {"\"run_type\": \"iteration\",$", MR_Next},
2255dda2efdSMircea Trofin {"\"repetitions\": 1,$", MR_Next},
2265dda2efdSMircea Trofin {"\"repetition_index\": 0,$", MR_Next},
2275dda2efdSMircea Trofin {"\"threads\": 1,$", MR_Next},
2285dda2efdSMircea Trofin {"\"iterations\": %int,$", MR_Next},
2295dda2efdSMircea Trofin {"\"real_time\": %float,$", MR_Next},
2305dda2efdSMircea Trofin {"\"cpu_time\": %float,$", MR_Next},
2315dda2efdSMircea Trofin {"\"time_unit\": \"us\"$", MR_Next},
2325dda2efdSMircea Trofin {"}", MR_Next}});
2335dda2efdSMircea Trofin ADD_CASES(TC_CSVOut, {{"^\"BM_time_label_microsecond\",%csv_us_report$"}});
2345dda2efdSMircea Trofin
BM_time_label_millisecond(benchmark::State & state)2355dda2efdSMircea Trofin void BM_time_label_millisecond(benchmark::State& state) {
2365dda2efdSMircea Trofin for (auto _ : state) {
2375dda2efdSMircea Trofin }
2385dda2efdSMircea Trofin }
2395dda2efdSMircea Trofin BENCHMARK(BM_time_label_millisecond)->Unit(benchmark::kMillisecond);
2405dda2efdSMircea Trofin
2415dda2efdSMircea Trofin ADD_CASES(TC_ConsoleOut, {{"^BM_time_label_millisecond %console_ms_report$"}});
2425dda2efdSMircea Trofin ADD_CASES(TC_JSONOut,
2435dda2efdSMircea Trofin {{"\"name\": \"BM_time_label_millisecond\",$"},
2445dda2efdSMircea Trofin {"\"family_index\": 6,$", MR_Next},
2455dda2efdSMircea Trofin {"\"per_family_instance_index\": 0,$", MR_Next},
2465dda2efdSMircea Trofin {"\"run_name\": \"BM_time_label_millisecond\",$", MR_Next},
2475dda2efdSMircea Trofin {"\"run_type\": \"iteration\",$", MR_Next},
2485dda2efdSMircea Trofin {"\"repetitions\": 1,$", MR_Next},
2495dda2efdSMircea Trofin {"\"repetition_index\": 0,$", MR_Next},
2505dda2efdSMircea Trofin {"\"threads\": 1,$", MR_Next},
2515dda2efdSMircea Trofin {"\"iterations\": %int,$", MR_Next},
2525dda2efdSMircea Trofin {"\"real_time\": %float,$", MR_Next},
2535dda2efdSMircea Trofin {"\"cpu_time\": %float,$", MR_Next},
2545dda2efdSMircea Trofin {"\"time_unit\": \"ms\"$", MR_Next},
2555dda2efdSMircea Trofin {"}", MR_Next}});
2565dda2efdSMircea Trofin ADD_CASES(TC_CSVOut, {{"^\"BM_time_label_millisecond\",%csv_ms_report$"}});
2575dda2efdSMircea Trofin
BM_time_label_second(benchmark::State & state)2585dda2efdSMircea Trofin void BM_time_label_second(benchmark::State& state) {
2595dda2efdSMircea Trofin for (auto _ : state) {
2605dda2efdSMircea Trofin }
2615dda2efdSMircea Trofin }
2625dda2efdSMircea Trofin BENCHMARK(BM_time_label_second)->Unit(benchmark::kSecond);
2635dda2efdSMircea Trofin
2645dda2efdSMircea Trofin ADD_CASES(TC_ConsoleOut, {{"^BM_time_label_second %console_s_report$"}});
2655dda2efdSMircea Trofin ADD_CASES(TC_JSONOut, {{"\"name\": \"BM_time_label_second\",$"},
2665dda2efdSMircea Trofin {"\"family_index\": 7,$", MR_Next},
2675dda2efdSMircea Trofin {"\"per_family_instance_index\": 0,$", MR_Next},
2685dda2efdSMircea Trofin {"\"run_name\": \"BM_time_label_second\",$", MR_Next},
2695dda2efdSMircea Trofin {"\"run_type\": \"iteration\",$", MR_Next},
2705dda2efdSMircea Trofin {"\"repetitions\": 1,$", MR_Next},
2715dda2efdSMircea Trofin {"\"repetition_index\": 0,$", MR_Next},
2725dda2efdSMircea Trofin {"\"threads\": 1,$", MR_Next},
2735dda2efdSMircea Trofin {"\"iterations\": %int,$", MR_Next},
2745dda2efdSMircea Trofin {"\"real_time\": %float,$", MR_Next},
2755dda2efdSMircea Trofin {"\"cpu_time\": %float,$", MR_Next},
2765dda2efdSMircea Trofin {"\"time_unit\": \"s\"$", MR_Next},
2775dda2efdSMircea Trofin {"}", MR_Next}});
2785dda2efdSMircea Trofin ADD_CASES(TC_CSVOut, {{"^\"BM_time_label_second\",%csv_s_report$"}});
2795dda2efdSMircea Trofin
2805dda2efdSMircea Trofin // ========================================================================= //
2815dda2efdSMircea Trofin // ------------------------ Testing Error Output --------------------------- //
2825dda2efdSMircea Trofin // ========================================================================= //
2835dda2efdSMircea Trofin
BM_error(benchmark::State & state)2845dda2efdSMircea Trofin void BM_error(benchmark::State& state) {
2855dda2efdSMircea Trofin state.SkipWithError("message");
2865dda2efdSMircea Trofin for (auto _ : state) {
2875dda2efdSMircea Trofin }
2885dda2efdSMircea Trofin }
2895dda2efdSMircea Trofin BENCHMARK(BM_error);
2905dda2efdSMircea Trofin ADD_CASES(TC_ConsoleOut, {{"^BM_error[ ]+ERROR OCCURRED: 'message'$"}});
2915dda2efdSMircea Trofin ADD_CASES(TC_JSONOut, {{"\"name\": \"BM_error\",$"},
2925dda2efdSMircea Trofin {"\"family_index\": 8,$", MR_Next},
2935dda2efdSMircea Trofin {"\"per_family_instance_index\": 0,$", MR_Next},
2945dda2efdSMircea Trofin {"\"run_name\": \"BM_error\",$", MR_Next},
2955dda2efdSMircea Trofin {"\"run_type\": \"iteration\",$", MR_Next},
2965dda2efdSMircea Trofin {"\"repetitions\": 1,$", MR_Next},
2975dda2efdSMircea Trofin {"\"repetition_index\": 0,$", MR_Next},
2985dda2efdSMircea Trofin {"\"threads\": 1,$", MR_Next},
2995dda2efdSMircea Trofin {"\"error_occurred\": true,$", MR_Next},
3005dda2efdSMircea Trofin {"\"error_message\": \"message\",$", MR_Next}});
3015dda2efdSMircea Trofin
3025dda2efdSMircea Trofin ADD_CASES(TC_CSVOut, {{"^\"BM_error\",,,,,,,,true,\"message\"$"}});
3035dda2efdSMircea Trofin
3045dda2efdSMircea Trofin // ========================================================================= //
3055dda2efdSMircea Trofin // ------------------------ Testing No Arg Name Output -----------------------
3065dda2efdSMircea Trofin // //
3075dda2efdSMircea Trofin // ========================================================================= //
3085dda2efdSMircea Trofin
BM_no_arg_name(benchmark::State & state)3095dda2efdSMircea Trofin void BM_no_arg_name(benchmark::State& state) {
3105dda2efdSMircea Trofin for (auto _ : state) {
3115dda2efdSMircea Trofin }
3125dda2efdSMircea Trofin }
3135dda2efdSMircea Trofin BENCHMARK(BM_no_arg_name)->Arg(3);
3145dda2efdSMircea Trofin ADD_CASES(TC_ConsoleOut, {{"^BM_no_arg_name/3 %console_report$"}});
3155dda2efdSMircea Trofin ADD_CASES(TC_JSONOut, {{"\"name\": \"BM_no_arg_name/3\",$"},
3165dda2efdSMircea Trofin {"\"family_index\": 9,$", MR_Next},
3175dda2efdSMircea Trofin {"\"per_family_instance_index\": 0,$", MR_Next},
3185dda2efdSMircea Trofin {"\"run_name\": \"BM_no_arg_name/3\",$", MR_Next},
3195dda2efdSMircea Trofin {"\"run_type\": \"iteration\",$", MR_Next},
3205dda2efdSMircea Trofin {"\"repetitions\": 1,$", MR_Next},
3215dda2efdSMircea Trofin {"\"repetition_index\": 0,$", MR_Next},
3225dda2efdSMircea Trofin {"\"threads\": 1,$", MR_Next}});
3235dda2efdSMircea Trofin ADD_CASES(TC_CSVOut, {{"^\"BM_no_arg_name/3\",%csv_report$"}});
3245dda2efdSMircea Trofin
3255dda2efdSMircea Trofin // ========================================================================= //
326*a5b79717SMircea Trofin // ------------------------ Testing Arg Name Output ------------------------ //
3275dda2efdSMircea Trofin // ========================================================================= //
3285dda2efdSMircea Trofin
BM_arg_name(benchmark::State & state)3295dda2efdSMircea Trofin void BM_arg_name(benchmark::State& state) {
3305dda2efdSMircea Trofin for (auto _ : state) {
3315dda2efdSMircea Trofin }
3325dda2efdSMircea Trofin }
3335dda2efdSMircea Trofin BENCHMARK(BM_arg_name)->ArgName("first")->Arg(3);
3345dda2efdSMircea Trofin ADD_CASES(TC_ConsoleOut, {{"^BM_arg_name/first:3 %console_report$"}});
3355dda2efdSMircea Trofin ADD_CASES(TC_JSONOut, {{"\"name\": \"BM_arg_name/first:3\",$"},
3365dda2efdSMircea Trofin {"\"family_index\": 10,$", MR_Next},
3375dda2efdSMircea Trofin {"\"per_family_instance_index\": 0,$", MR_Next},
3385dda2efdSMircea Trofin {"\"run_name\": \"BM_arg_name/first:3\",$", MR_Next},
3395dda2efdSMircea Trofin {"\"run_type\": \"iteration\",$", MR_Next},
3405dda2efdSMircea Trofin {"\"repetitions\": 1,$", MR_Next},
3415dda2efdSMircea Trofin {"\"repetition_index\": 0,$", MR_Next},
3425dda2efdSMircea Trofin {"\"threads\": 1,$", MR_Next}});
3435dda2efdSMircea Trofin ADD_CASES(TC_CSVOut, {{"^\"BM_arg_name/first:3\",%csv_report$"}});
3445dda2efdSMircea Trofin
3455dda2efdSMircea Trofin // ========================================================================= //
3465dda2efdSMircea Trofin // ------------------------ Testing Arg Names Output ----------------------- //
3475dda2efdSMircea Trofin // ========================================================================= //
3485dda2efdSMircea Trofin
BM_arg_names(benchmark::State & state)3495dda2efdSMircea Trofin void BM_arg_names(benchmark::State& state) {
3505dda2efdSMircea Trofin for (auto _ : state) {
3515dda2efdSMircea Trofin }
3525dda2efdSMircea Trofin }
3535dda2efdSMircea Trofin BENCHMARK(BM_arg_names)->Args({2, 5, 4})->ArgNames({"first", "", "third"});
3545dda2efdSMircea Trofin ADD_CASES(TC_ConsoleOut,
3555dda2efdSMircea Trofin {{"^BM_arg_names/first:2/5/third:4 %console_report$"}});
3565dda2efdSMircea Trofin ADD_CASES(TC_JSONOut,
3575dda2efdSMircea Trofin {{"\"name\": \"BM_arg_names/first:2/5/third:4\",$"},
3585dda2efdSMircea Trofin {"\"family_index\": 11,$", MR_Next},
3595dda2efdSMircea Trofin {"\"per_family_instance_index\": 0,$", MR_Next},
3605dda2efdSMircea Trofin {"\"run_name\": \"BM_arg_names/first:2/5/third:4\",$", MR_Next},
3615dda2efdSMircea Trofin {"\"run_type\": \"iteration\",$", MR_Next},
3625dda2efdSMircea Trofin {"\"repetitions\": 1,$", MR_Next},
3635dda2efdSMircea Trofin {"\"repetition_index\": 0,$", MR_Next},
3645dda2efdSMircea Trofin {"\"threads\": 1,$", MR_Next}});
3655dda2efdSMircea Trofin ADD_CASES(TC_CSVOut, {{"^\"BM_arg_names/first:2/5/third:4\",%csv_report$"}});
3665dda2efdSMircea Trofin
3675dda2efdSMircea Trofin // ========================================================================= //
3685dda2efdSMircea Trofin // ------------------------ Testing Name Output ---------------------------- //
3695dda2efdSMircea Trofin // ========================================================================= //
3705dda2efdSMircea Trofin
BM_name(benchmark::State & state)3715dda2efdSMircea Trofin void BM_name(benchmark::State& state) {
3725dda2efdSMircea Trofin for (auto _ : state) {
3735dda2efdSMircea Trofin }
3745dda2efdSMircea Trofin }
3755dda2efdSMircea Trofin BENCHMARK(BM_name)->Name("BM_custom_name");
3765dda2efdSMircea Trofin
3775dda2efdSMircea Trofin ADD_CASES(TC_ConsoleOut, {{"^BM_custom_name %console_report$"}});
3785dda2efdSMircea Trofin ADD_CASES(TC_JSONOut, {{"\"name\": \"BM_custom_name\",$"},
3795dda2efdSMircea Trofin {"\"family_index\": 12,$", MR_Next},
3805dda2efdSMircea Trofin {"\"per_family_instance_index\": 0,$", MR_Next},
3815dda2efdSMircea Trofin {"\"run_name\": \"BM_custom_name\",$", MR_Next},
3825dda2efdSMircea Trofin {"\"run_type\": \"iteration\",$", MR_Next},
3835dda2efdSMircea Trofin {"\"repetitions\": 1,$", MR_Next},
3845dda2efdSMircea Trofin {"\"repetition_index\": 0,$", MR_Next},
3855dda2efdSMircea Trofin {"\"threads\": 1,$", MR_Next},
3865dda2efdSMircea Trofin {"\"iterations\": %int,$", MR_Next},
3875dda2efdSMircea Trofin {"\"real_time\": %float,$", MR_Next},
3885dda2efdSMircea Trofin {"\"cpu_time\": %float,$", MR_Next},
3895dda2efdSMircea Trofin {"\"time_unit\": \"ns\"$", MR_Next},
3905dda2efdSMircea Trofin {"}", MR_Next}});
3915dda2efdSMircea Trofin ADD_CASES(TC_CSVOut, {{"^\"BM_custom_name\",%csv_report$"}});
3925dda2efdSMircea Trofin
3935dda2efdSMircea Trofin // ========================================================================= //
3945dda2efdSMircea Trofin // ------------------------ Testing Big Args Output ------------------------ //
3955dda2efdSMircea Trofin // ========================================================================= //
3965dda2efdSMircea Trofin
BM_BigArgs(benchmark::State & state)3975dda2efdSMircea Trofin void BM_BigArgs(benchmark::State& state) {
3985dda2efdSMircea Trofin for (auto _ : state) {
3995dda2efdSMircea Trofin }
4005dda2efdSMircea Trofin }
4015dda2efdSMircea Trofin BENCHMARK(BM_BigArgs)->RangeMultiplier(2)->Range(1U << 30U, 1U << 31U);
4025dda2efdSMircea Trofin ADD_CASES(TC_ConsoleOut, {{"^BM_BigArgs/1073741824 %console_report$"},
4035dda2efdSMircea Trofin {"^BM_BigArgs/2147483648 %console_report$"}});
4045dda2efdSMircea Trofin
4055dda2efdSMircea Trofin // ========================================================================= //
4065dda2efdSMircea Trofin // ----------------------- Testing Complexity Output ----------------------- //
4075dda2efdSMircea Trofin // ========================================================================= //
4085dda2efdSMircea Trofin
BM_Complexity_O1(benchmark::State & state)4095dda2efdSMircea Trofin void BM_Complexity_O1(benchmark::State& state) {
4105dda2efdSMircea Trofin for (auto _ : state) {
4115dda2efdSMircea Trofin // This test requires a non-zero CPU time to avoid divide-by-zero
412*a5b79717SMircea Trofin auto iterations = double(state.iterations()) * double(state.iterations());
413*a5b79717SMircea Trofin benchmark::DoNotOptimize(iterations);
4145dda2efdSMircea Trofin }
4155dda2efdSMircea Trofin state.SetComplexityN(state.range(0));
4165dda2efdSMircea Trofin }
4175dda2efdSMircea Trofin BENCHMARK(BM_Complexity_O1)->Range(1, 1 << 18)->Complexity(benchmark::o1);
4185dda2efdSMircea Trofin SET_SUBSTITUTIONS({{"%bigOStr", "[ ]* %float \\([0-9]+\\)"},
4195dda2efdSMircea Trofin {"%RMS", "[ ]*[0-9]+ %"}});
4205dda2efdSMircea Trofin ADD_CASES(TC_ConsoleOut, {{"^BM_Complexity_O1_BigO %bigOStr %bigOStr[ ]*$"},
4215dda2efdSMircea Trofin {"^BM_Complexity_O1_RMS %RMS %RMS[ ]*$"}});
4225dda2efdSMircea Trofin
4235dda2efdSMircea Trofin // ========================================================================= //
4245dda2efdSMircea Trofin // ----------------------- Testing Aggregate Output ------------------------ //
4255dda2efdSMircea Trofin // ========================================================================= //
4265dda2efdSMircea Trofin
4275dda2efdSMircea Trofin // Test that non-aggregate data is printed by default
BM_Repeat(benchmark::State & state)4285dda2efdSMircea Trofin void BM_Repeat(benchmark::State& state) {
4295dda2efdSMircea Trofin for (auto _ : state) {
4305dda2efdSMircea Trofin }
4315dda2efdSMircea Trofin }
4325dda2efdSMircea Trofin // need two repetitions min to be able to output any aggregate output
4335dda2efdSMircea Trofin BENCHMARK(BM_Repeat)->Repetitions(2);
4345dda2efdSMircea Trofin ADD_CASES(TC_ConsoleOut,
4355dda2efdSMircea Trofin {{"^BM_Repeat/repeats:2 %console_report$"},
4365dda2efdSMircea Trofin {"^BM_Repeat/repeats:2 %console_report$"},
4375dda2efdSMircea Trofin {"^BM_Repeat/repeats:2_mean %console_time_only_report [ ]*2$"},
4385dda2efdSMircea Trofin {"^BM_Repeat/repeats:2_median %console_time_only_report [ ]*2$"},
4395dda2efdSMircea Trofin {"^BM_Repeat/repeats:2_stddev %console_time_only_report [ ]*2$"}});
4405dda2efdSMircea Trofin ADD_CASES(TC_JSONOut, {{"\"name\": \"BM_Repeat/repeats:2\",$"},
4415dda2efdSMircea Trofin {"\"family_index\": 15,$", MR_Next},
4425dda2efdSMircea Trofin {"\"per_family_instance_index\": 0,$", MR_Next},
4435dda2efdSMircea Trofin {"\"run_name\": \"BM_Repeat/repeats:2\"", MR_Next},
4445dda2efdSMircea Trofin {"\"run_type\": \"iteration\",$", MR_Next},
4455dda2efdSMircea Trofin {"\"repetitions\": 2,$", MR_Next},
4465dda2efdSMircea Trofin {"\"repetition_index\": 0,$", MR_Next},
4475dda2efdSMircea Trofin {"\"threads\": 1,$", MR_Next},
4485dda2efdSMircea Trofin {"\"name\": \"BM_Repeat/repeats:2\",$"},
4495dda2efdSMircea Trofin {"\"family_index\": 15,$", MR_Next},
4505dda2efdSMircea Trofin {"\"per_family_instance_index\": 0,$", MR_Next},
4515dda2efdSMircea Trofin {"\"run_name\": \"BM_Repeat/repeats:2\",$", MR_Next},
4525dda2efdSMircea Trofin {"\"run_type\": \"iteration\",$", MR_Next},
4535dda2efdSMircea Trofin {"\"repetitions\": 2,$", MR_Next},
4545dda2efdSMircea Trofin {"\"repetition_index\": 1,$", MR_Next},
4555dda2efdSMircea Trofin {"\"threads\": 1,$", MR_Next},
4565dda2efdSMircea Trofin {"\"name\": \"BM_Repeat/repeats:2_mean\",$"},
4575dda2efdSMircea Trofin {"\"family_index\": 15,$", MR_Next},
4585dda2efdSMircea Trofin {"\"per_family_instance_index\": 0,$", MR_Next},
4595dda2efdSMircea Trofin {"\"run_name\": \"BM_Repeat/repeats:2\",$", MR_Next},
4605dda2efdSMircea Trofin {"\"run_type\": \"aggregate\",$", MR_Next},
4615dda2efdSMircea Trofin {"\"repetitions\": 2,$", MR_Next},
4625dda2efdSMircea Trofin {"\"threads\": 1,$", MR_Next},
4635dda2efdSMircea Trofin {"\"aggregate_name\": \"mean\",$", MR_Next},
464a290770fSMircea Trofin {"\"aggregate_unit\": \"time\",$", MR_Next},
4655dda2efdSMircea Trofin {"\"iterations\": 2,$", MR_Next},
4665dda2efdSMircea Trofin {"\"name\": \"BM_Repeat/repeats:2_median\",$"},
4675dda2efdSMircea Trofin {"\"family_index\": 15,$", MR_Next},
4685dda2efdSMircea Trofin {"\"per_family_instance_index\": 0,$", MR_Next},
4695dda2efdSMircea Trofin {"\"run_name\": \"BM_Repeat/repeats:2\",$", MR_Next},
4705dda2efdSMircea Trofin {"\"run_type\": \"aggregate\",$", MR_Next},
4715dda2efdSMircea Trofin {"\"repetitions\": 2,$", MR_Next},
4725dda2efdSMircea Trofin {"\"threads\": 1,$", MR_Next},
4735dda2efdSMircea Trofin {"\"aggregate_name\": \"median\",$", MR_Next},
474a290770fSMircea Trofin {"\"aggregate_unit\": \"time\",$", MR_Next},
4755dda2efdSMircea Trofin {"\"iterations\": 2,$", MR_Next},
4765dda2efdSMircea Trofin {"\"name\": \"BM_Repeat/repeats:2_stddev\",$"},
4775dda2efdSMircea Trofin {"\"family_index\": 15,$", MR_Next},
4785dda2efdSMircea Trofin {"\"per_family_instance_index\": 0,$", MR_Next},
4795dda2efdSMircea Trofin {"\"run_name\": \"BM_Repeat/repeats:2\",$", MR_Next},
4805dda2efdSMircea Trofin {"\"run_type\": \"aggregate\",$", MR_Next},
4815dda2efdSMircea Trofin {"\"repetitions\": 2,$", MR_Next},
4825dda2efdSMircea Trofin {"\"threads\": 1,$", MR_Next},
4835dda2efdSMircea Trofin {"\"aggregate_name\": \"stddev\",$", MR_Next},
484a290770fSMircea Trofin {"\"aggregate_unit\": \"time\",$", MR_Next},
4855dda2efdSMircea Trofin {"\"iterations\": 2,$", MR_Next}});
4865dda2efdSMircea Trofin ADD_CASES(TC_CSVOut, {{"^\"BM_Repeat/repeats:2\",%csv_report$"},
4875dda2efdSMircea Trofin {"^\"BM_Repeat/repeats:2\",%csv_report$"},
4885dda2efdSMircea Trofin {"^\"BM_Repeat/repeats:2_mean\",%csv_report$"},
4895dda2efdSMircea Trofin {"^\"BM_Repeat/repeats:2_median\",%csv_report$"},
4905dda2efdSMircea Trofin {"^\"BM_Repeat/repeats:2_stddev\",%csv_report$"}});
4915dda2efdSMircea Trofin // but for two repetitions, mean and median is the same, so let's repeat..
4925dda2efdSMircea Trofin BENCHMARK(BM_Repeat)->Repetitions(3);
4935dda2efdSMircea Trofin ADD_CASES(TC_ConsoleOut,
4945dda2efdSMircea Trofin {{"^BM_Repeat/repeats:3 %console_report$"},
4955dda2efdSMircea Trofin {"^BM_Repeat/repeats:3 %console_report$"},
4965dda2efdSMircea Trofin {"^BM_Repeat/repeats:3 %console_report$"},
4975dda2efdSMircea Trofin {"^BM_Repeat/repeats:3_mean %console_time_only_report [ ]*3$"},
4985dda2efdSMircea Trofin {"^BM_Repeat/repeats:3_median %console_time_only_report [ ]*3$"},
4995dda2efdSMircea Trofin {"^BM_Repeat/repeats:3_stddev %console_time_only_report [ ]*3$"}});
5005dda2efdSMircea Trofin ADD_CASES(TC_JSONOut, {{"\"name\": \"BM_Repeat/repeats:3\",$"},
5015dda2efdSMircea Trofin {"\"family_index\": 16,$", MR_Next},
5025dda2efdSMircea Trofin {"\"per_family_instance_index\": 0,$", MR_Next},
5035dda2efdSMircea Trofin {"\"run_name\": \"BM_Repeat/repeats:3\",$", MR_Next},
5045dda2efdSMircea Trofin {"\"run_type\": \"iteration\",$", MR_Next},
5055dda2efdSMircea Trofin {"\"repetitions\": 3,$", MR_Next},
5065dda2efdSMircea Trofin {"\"repetition_index\": 0,$", MR_Next},
5075dda2efdSMircea Trofin {"\"threads\": 1,$", MR_Next},
5085dda2efdSMircea Trofin {"\"name\": \"BM_Repeat/repeats:3\",$"},
5095dda2efdSMircea Trofin {"\"family_index\": 16,$", MR_Next},
5105dda2efdSMircea Trofin {"\"per_family_instance_index\": 0,$", MR_Next},
5115dda2efdSMircea Trofin {"\"run_name\": \"BM_Repeat/repeats:3\",$", MR_Next},
5125dda2efdSMircea Trofin {"\"run_type\": \"iteration\",$", MR_Next},
5135dda2efdSMircea Trofin {"\"repetitions\": 3,$", MR_Next},
5145dda2efdSMircea Trofin {"\"repetition_index\": 1,$", MR_Next},
5155dda2efdSMircea Trofin {"\"threads\": 1,$", MR_Next},
5165dda2efdSMircea Trofin {"\"name\": \"BM_Repeat/repeats:3\",$"},
5175dda2efdSMircea Trofin {"\"family_index\": 16,$", MR_Next},
5185dda2efdSMircea Trofin {"\"per_family_instance_index\": 0,$", MR_Next},
5195dda2efdSMircea Trofin {"\"run_name\": \"BM_Repeat/repeats:3\",$", MR_Next},
5205dda2efdSMircea Trofin {"\"run_type\": \"iteration\",$", MR_Next},
5215dda2efdSMircea Trofin {"\"repetitions\": 3,$", MR_Next},
5225dda2efdSMircea Trofin {"\"repetition_index\": 2,$", MR_Next},
5235dda2efdSMircea Trofin {"\"threads\": 1,$", MR_Next},
5245dda2efdSMircea Trofin {"\"name\": \"BM_Repeat/repeats:3_mean\",$"},
5255dda2efdSMircea Trofin {"\"family_index\": 16,$", MR_Next},
5265dda2efdSMircea Trofin {"\"per_family_instance_index\": 0,$", MR_Next},
5275dda2efdSMircea Trofin {"\"run_name\": \"BM_Repeat/repeats:3\",$", MR_Next},
5285dda2efdSMircea Trofin {"\"run_type\": \"aggregate\",$", MR_Next},
5295dda2efdSMircea Trofin {"\"repetitions\": 3,$", MR_Next},
5305dda2efdSMircea Trofin {"\"threads\": 1,$", MR_Next},
5315dda2efdSMircea Trofin {"\"aggregate_name\": \"mean\",$", MR_Next},
532a290770fSMircea Trofin {"\"aggregate_unit\": \"time\",$", MR_Next},
5335dda2efdSMircea Trofin {"\"iterations\": 3,$", MR_Next},
5345dda2efdSMircea Trofin {"\"name\": \"BM_Repeat/repeats:3_median\",$"},
5355dda2efdSMircea Trofin {"\"family_index\": 16,$", MR_Next},
5365dda2efdSMircea Trofin {"\"per_family_instance_index\": 0,$", MR_Next},
5375dda2efdSMircea Trofin {"\"run_name\": \"BM_Repeat/repeats:3\",$", MR_Next},
5385dda2efdSMircea Trofin {"\"run_type\": \"aggregate\",$", MR_Next},
5395dda2efdSMircea Trofin {"\"repetitions\": 3,$", MR_Next},
5405dda2efdSMircea Trofin {"\"threads\": 1,$", MR_Next},
5415dda2efdSMircea Trofin {"\"aggregate_name\": \"median\",$", MR_Next},
542a290770fSMircea Trofin {"\"aggregate_unit\": \"time\",$", MR_Next},
5435dda2efdSMircea Trofin {"\"iterations\": 3,$", MR_Next},
5445dda2efdSMircea Trofin {"\"name\": \"BM_Repeat/repeats:3_stddev\",$"},
5455dda2efdSMircea Trofin {"\"family_index\": 16,$", MR_Next},
5465dda2efdSMircea Trofin {"\"per_family_instance_index\": 0,$", MR_Next},
5475dda2efdSMircea Trofin {"\"run_name\": \"BM_Repeat/repeats:3\",$", MR_Next},
5485dda2efdSMircea Trofin {"\"run_type\": \"aggregate\",$", MR_Next},
5495dda2efdSMircea Trofin {"\"repetitions\": 3,$", MR_Next},
5505dda2efdSMircea Trofin {"\"threads\": 1,$", MR_Next},
5515dda2efdSMircea Trofin {"\"aggregate_name\": \"stddev\",$", MR_Next},
552a290770fSMircea Trofin {"\"aggregate_unit\": \"time\",$", MR_Next},
5535dda2efdSMircea Trofin {"\"iterations\": 3,$", MR_Next}});
5545dda2efdSMircea Trofin ADD_CASES(TC_CSVOut, {{"^\"BM_Repeat/repeats:3\",%csv_report$"},
5555dda2efdSMircea Trofin {"^\"BM_Repeat/repeats:3\",%csv_report$"},
5565dda2efdSMircea Trofin {"^\"BM_Repeat/repeats:3\",%csv_report$"},
5575dda2efdSMircea Trofin {"^\"BM_Repeat/repeats:3_mean\",%csv_report$"},
5585dda2efdSMircea Trofin {"^\"BM_Repeat/repeats:3_median\",%csv_report$"},
5595dda2efdSMircea Trofin {"^\"BM_Repeat/repeats:3_stddev\",%csv_report$"}});
5605dda2efdSMircea Trofin // median differs between even/odd number of repetitions, so just to be sure
5615dda2efdSMircea Trofin BENCHMARK(BM_Repeat)->Repetitions(4);
5625dda2efdSMircea Trofin ADD_CASES(TC_ConsoleOut,
5635dda2efdSMircea Trofin {{"^BM_Repeat/repeats:4 %console_report$"},
5645dda2efdSMircea Trofin {"^BM_Repeat/repeats:4 %console_report$"},
5655dda2efdSMircea Trofin {"^BM_Repeat/repeats:4 %console_report$"},
5665dda2efdSMircea Trofin {"^BM_Repeat/repeats:4 %console_report$"},
5675dda2efdSMircea Trofin {"^BM_Repeat/repeats:4_mean %console_time_only_report [ ]*4$"},
5685dda2efdSMircea Trofin {"^BM_Repeat/repeats:4_median %console_time_only_report [ ]*4$"},
5695dda2efdSMircea Trofin {"^BM_Repeat/repeats:4_stddev %console_time_only_report [ ]*4$"}});
5705dda2efdSMircea Trofin ADD_CASES(TC_JSONOut, {{"\"name\": \"BM_Repeat/repeats:4\",$"},
5715dda2efdSMircea Trofin {"\"family_index\": 17,$", MR_Next},
5725dda2efdSMircea Trofin {"\"per_family_instance_index\": 0,$", MR_Next},
5735dda2efdSMircea Trofin {"\"run_name\": \"BM_Repeat/repeats:4\",$", MR_Next},
5745dda2efdSMircea Trofin {"\"run_type\": \"iteration\",$", MR_Next},
5755dda2efdSMircea Trofin {"\"repetitions\": 4,$", MR_Next},
5765dda2efdSMircea Trofin {"\"repetition_index\": 0,$", MR_Next},
5775dda2efdSMircea Trofin {"\"threads\": 1,$", MR_Next},
5785dda2efdSMircea Trofin {"\"name\": \"BM_Repeat/repeats:4\",$"},
5795dda2efdSMircea Trofin {"\"family_index\": 17,$", MR_Next},
5805dda2efdSMircea Trofin {"\"per_family_instance_index\": 0,$", MR_Next},
5815dda2efdSMircea Trofin {"\"run_name\": \"BM_Repeat/repeats:4\",$", MR_Next},
5825dda2efdSMircea Trofin {"\"run_type\": \"iteration\",$", MR_Next},
5835dda2efdSMircea Trofin {"\"repetitions\": 4,$", MR_Next},
5845dda2efdSMircea Trofin {"\"repetition_index\": 1,$", MR_Next},
5855dda2efdSMircea Trofin {"\"threads\": 1,$", MR_Next},
5865dda2efdSMircea Trofin {"\"name\": \"BM_Repeat/repeats:4\",$"},
5875dda2efdSMircea Trofin {"\"family_index\": 17,$", MR_Next},
5885dda2efdSMircea Trofin {"\"per_family_instance_index\": 0,$", MR_Next},
5895dda2efdSMircea Trofin {"\"run_name\": \"BM_Repeat/repeats:4\",$", MR_Next},
5905dda2efdSMircea Trofin {"\"run_type\": \"iteration\",$", MR_Next},
5915dda2efdSMircea Trofin {"\"repetitions\": 4,$", MR_Next},
5925dda2efdSMircea Trofin {"\"repetition_index\": 2,$", MR_Next},
5935dda2efdSMircea Trofin {"\"threads\": 1,$", MR_Next},
5945dda2efdSMircea Trofin {"\"name\": \"BM_Repeat/repeats:4\",$"},
5955dda2efdSMircea Trofin {"\"family_index\": 17,$", MR_Next},
5965dda2efdSMircea Trofin {"\"per_family_instance_index\": 0,$", MR_Next},
5975dda2efdSMircea Trofin {"\"run_name\": \"BM_Repeat/repeats:4\",$", MR_Next},
5985dda2efdSMircea Trofin {"\"run_type\": \"iteration\",$", MR_Next},
5995dda2efdSMircea Trofin {"\"repetitions\": 4,$", MR_Next},
6005dda2efdSMircea Trofin {"\"repetition_index\": 3,$", MR_Next},
6015dda2efdSMircea Trofin {"\"threads\": 1,$", MR_Next},
6025dda2efdSMircea Trofin {"\"name\": \"BM_Repeat/repeats:4_mean\",$"},
6035dda2efdSMircea Trofin {"\"family_index\": 17,$", MR_Next},
6045dda2efdSMircea Trofin {"\"per_family_instance_index\": 0,$", MR_Next},
6055dda2efdSMircea Trofin {"\"run_name\": \"BM_Repeat/repeats:4\",$", MR_Next},
6065dda2efdSMircea Trofin {"\"run_type\": \"aggregate\",$", MR_Next},
6075dda2efdSMircea Trofin {"\"repetitions\": 4,$", MR_Next},
6085dda2efdSMircea Trofin {"\"threads\": 1,$", MR_Next},
6095dda2efdSMircea Trofin {"\"aggregate_name\": \"mean\",$", MR_Next},
610a290770fSMircea Trofin {"\"aggregate_unit\": \"time\",$", MR_Next},
6115dda2efdSMircea Trofin {"\"iterations\": 4,$", MR_Next},
6125dda2efdSMircea Trofin {"\"name\": \"BM_Repeat/repeats:4_median\",$"},
6135dda2efdSMircea Trofin {"\"family_index\": 17,$", MR_Next},
6145dda2efdSMircea Trofin {"\"per_family_instance_index\": 0,$", MR_Next},
6155dda2efdSMircea Trofin {"\"run_name\": \"BM_Repeat/repeats:4\",$", MR_Next},
6165dda2efdSMircea Trofin {"\"run_type\": \"aggregate\",$", MR_Next},
6175dda2efdSMircea Trofin {"\"repetitions\": 4,$", MR_Next},
6185dda2efdSMircea Trofin {"\"threads\": 1,$", MR_Next},
6195dda2efdSMircea Trofin {"\"aggregate_name\": \"median\",$", MR_Next},
620a290770fSMircea Trofin {"\"aggregate_unit\": \"time\",$", MR_Next},
6215dda2efdSMircea Trofin {"\"iterations\": 4,$", MR_Next},
6225dda2efdSMircea Trofin {"\"name\": \"BM_Repeat/repeats:4_stddev\",$"},
6235dda2efdSMircea Trofin {"\"family_index\": 17,$", MR_Next},
6245dda2efdSMircea Trofin {"\"per_family_instance_index\": 0,$", MR_Next},
6255dda2efdSMircea Trofin {"\"run_name\": \"BM_Repeat/repeats:4\",$", MR_Next},
6265dda2efdSMircea Trofin {"\"run_type\": \"aggregate\",$", MR_Next},
6275dda2efdSMircea Trofin {"\"repetitions\": 4,$", MR_Next},
6285dda2efdSMircea Trofin {"\"threads\": 1,$", MR_Next},
6295dda2efdSMircea Trofin {"\"aggregate_name\": \"stddev\",$", MR_Next},
630a290770fSMircea Trofin {"\"aggregate_unit\": \"time\",$", MR_Next},
6315dda2efdSMircea Trofin {"\"iterations\": 4,$", MR_Next}});
6325dda2efdSMircea Trofin ADD_CASES(TC_CSVOut, {{"^\"BM_Repeat/repeats:4\",%csv_report$"},
6335dda2efdSMircea Trofin {"^\"BM_Repeat/repeats:4\",%csv_report$"},
6345dda2efdSMircea Trofin {"^\"BM_Repeat/repeats:4\",%csv_report$"},
6355dda2efdSMircea Trofin {"^\"BM_Repeat/repeats:4\",%csv_report$"},
6365dda2efdSMircea Trofin {"^\"BM_Repeat/repeats:4_mean\",%csv_report$"},
6375dda2efdSMircea Trofin {"^\"BM_Repeat/repeats:4_median\",%csv_report$"},
6385dda2efdSMircea Trofin {"^\"BM_Repeat/repeats:4_stddev\",%csv_report$"}});
6395dda2efdSMircea Trofin
6405dda2efdSMircea Trofin // Test that a non-repeated test still prints non-aggregate results even when
6415dda2efdSMircea Trofin // only-aggregate reports have been requested
BM_RepeatOnce(benchmark::State & state)6425dda2efdSMircea Trofin void BM_RepeatOnce(benchmark::State& state) {
6435dda2efdSMircea Trofin for (auto _ : state) {
6445dda2efdSMircea Trofin }
6455dda2efdSMircea Trofin }
6465dda2efdSMircea Trofin BENCHMARK(BM_RepeatOnce)->Repetitions(1)->ReportAggregatesOnly();
6475dda2efdSMircea Trofin ADD_CASES(TC_ConsoleOut, {{"^BM_RepeatOnce/repeats:1 %console_report$"}});
6485dda2efdSMircea Trofin ADD_CASES(TC_JSONOut, {{"\"name\": \"BM_RepeatOnce/repeats:1\",$"},
6495dda2efdSMircea Trofin {"\"family_index\": 18,$", MR_Next},
6505dda2efdSMircea Trofin {"\"per_family_instance_index\": 0,$", MR_Next},
6515dda2efdSMircea Trofin {"\"run_name\": \"BM_RepeatOnce/repeats:1\",$", MR_Next},
6525dda2efdSMircea Trofin {"\"run_type\": \"iteration\",$", MR_Next},
6535dda2efdSMircea Trofin {"\"repetitions\": 1,$", MR_Next},
6545dda2efdSMircea Trofin {"\"repetition_index\": 0,$", MR_Next},
6555dda2efdSMircea Trofin {"\"threads\": 1,$", MR_Next}});
6565dda2efdSMircea Trofin ADD_CASES(TC_CSVOut, {{"^\"BM_RepeatOnce/repeats:1\",%csv_report$"}});
6575dda2efdSMircea Trofin
6585dda2efdSMircea Trofin // Test that non-aggregate data is not reported
BM_SummaryRepeat(benchmark::State & state)6595dda2efdSMircea Trofin void BM_SummaryRepeat(benchmark::State& state) {
6605dda2efdSMircea Trofin for (auto _ : state) {
6615dda2efdSMircea Trofin }
6625dda2efdSMircea Trofin }
6635dda2efdSMircea Trofin BENCHMARK(BM_SummaryRepeat)->Repetitions(3)->ReportAggregatesOnly();
6645dda2efdSMircea Trofin ADD_CASES(
6655dda2efdSMircea Trofin TC_ConsoleOut,
6665dda2efdSMircea Trofin {{".*BM_SummaryRepeat/repeats:3 ", MR_Not},
6675dda2efdSMircea Trofin {"^BM_SummaryRepeat/repeats:3_mean %console_time_only_report [ ]*3$"},
6685dda2efdSMircea Trofin {"^BM_SummaryRepeat/repeats:3_median %console_time_only_report [ ]*3$"},
6695dda2efdSMircea Trofin {"^BM_SummaryRepeat/repeats:3_stddev %console_time_only_report [ ]*3$"}});
6705dda2efdSMircea Trofin ADD_CASES(TC_JSONOut,
6715dda2efdSMircea Trofin {{".*BM_SummaryRepeat/repeats:3 ", MR_Not},
6725dda2efdSMircea Trofin {"\"name\": \"BM_SummaryRepeat/repeats:3_mean\",$"},
6735dda2efdSMircea Trofin {"\"family_index\": 19,$", MR_Next},
6745dda2efdSMircea Trofin {"\"per_family_instance_index\": 0,$", MR_Next},
6755dda2efdSMircea Trofin {"\"run_name\": \"BM_SummaryRepeat/repeats:3\",$", MR_Next},
6765dda2efdSMircea Trofin {"\"run_type\": \"aggregate\",$", MR_Next},
6775dda2efdSMircea Trofin {"\"repetitions\": 3,$", MR_Next},
6785dda2efdSMircea Trofin {"\"threads\": 1,$", MR_Next},
6795dda2efdSMircea Trofin {"\"aggregate_name\": \"mean\",$", MR_Next},
680a290770fSMircea Trofin {"\"aggregate_unit\": \"time\",$", MR_Next},
6815dda2efdSMircea Trofin {"\"iterations\": 3,$", MR_Next},
6825dda2efdSMircea Trofin {"\"name\": \"BM_SummaryRepeat/repeats:3_median\",$"},
6835dda2efdSMircea Trofin {"\"family_index\": 19,$", MR_Next},
6845dda2efdSMircea Trofin {"\"per_family_instance_index\": 0,$", MR_Next},
6855dda2efdSMircea Trofin {"\"run_name\": \"BM_SummaryRepeat/repeats:3\",$", MR_Next},
6865dda2efdSMircea Trofin {"\"run_type\": \"aggregate\",$", MR_Next},
6875dda2efdSMircea Trofin {"\"repetitions\": 3,$", MR_Next},
6885dda2efdSMircea Trofin {"\"threads\": 1,$", MR_Next},
6895dda2efdSMircea Trofin {"\"aggregate_name\": \"median\",$", MR_Next},
690a290770fSMircea Trofin {"\"aggregate_unit\": \"time\",$", MR_Next},
6915dda2efdSMircea Trofin {"\"iterations\": 3,$", MR_Next},
6925dda2efdSMircea Trofin {"\"name\": \"BM_SummaryRepeat/repeats:3_stddev\",$"},
6935dda2efdSMircea Trofin {"\"family_index\": 19,$", MR_Next},
6945dda2efdSMircea Trofin {"\"per_family_instance_index\": 0,$", MR_Next},
6955dda2efdSMircea Trofin {"\"run_name\": \"BM_SummaryRepeat/repeats:3\",$", MR_Next},
6965dda2efdSMircea Trofin {"\"run_type\": \"aggregate\",$", MR_Next},
6975dda2efdSMircea Trofin {"\"repetitions\": 3,$", MR_Next},
6985dda2efdSMircea Trofin {"\"threads\": 1,$", MR_Next},
6995dda2efdSMircea Trofin {"\"aggregate_name\": \"stddev\",$", MR_Next},
700a290770fSMircea Trofin {"\"aggregate_unit\": \"time\",$", MR_Next},
7015dda2efdSMircea Trofin {"\"iterations\": 3,$", MR_Next}});
7025dda2efdSMircea Trofin ADD_CASES(TC_CSVOut, {{".*BM_SummaryRepeat/repeats:3 ", MR_Not},
7035dda2efdSMircea Trofin {"^\"BM_SummaryRepeat/repeats:3_mean\",%csv_report$"},
7045dda2efdSMircea Trofin {"^\"BM_SummaryRepeat/repeats:3_median\",%csv_report$"},
7055dda2efdSMircea Trofin {"^\"BM_SummaryRepeat/repeats:3_stddev\",%csv_report$"}});
7065dda2efdSMircea Trofin
7075dda2efdSMircea Trofin // Test that non-aggregate data is not displayed.
7085dda2efdSMircea Trofin // NOTE: this test is kinda bad. we are only testing the display output.
7095dda2efdSMircea Trofin // But we don't check that the file output still contains everything...
BM_SummaryDisplay(benchmark::State & state)7105dda2efdSMircea Trofin void BM_SummaryDisplay(benchmark::State& state) {
7115dda2efdSMircea Trofin for (auto _ : state) {
7125dda2efdSMircea Trofin }
7135dda2efdSMircea Trofin }
7145dda2efdSMircea Trofin BENCHMARK(BM_SummaryDisplay)->Repetitions(2)->DisplayAggregatesOnly();
7155dda2efdSMircea Trofin ADD_CASES(
7165dda2efdSMircea Trofin TC_ConsoleOut,
7175dda2efdSMircea Trofin {{".*BM_SummaryDisplay/repeats:2 ", MR_Not},
7185dda2efdSMircea Trofin {"^BM_SummaryDisplay/repeats:2_mean %console_time_only_report [ ]*2$"},
7195dda2efdSMircea Trofin {"^BM_SummaryDisplay/repeats:2_median %console_time_only_report [ ]*2$"},
7205dda2efdSMircea Trofin {"^BM_SummaryDisplay/repeats:2_stddev %console_time_only_report [ ]*2$"}});
7215dda2efdSMircea Trofin ADD_CASES(TC_JSONOut,
7225dda2efdSMircea Trofin {{".*BM_SummaryDisplay/repeats:2 ", MR_Not},
7235dda2efdSMircea Trofin {"\"name\": \"BM_SummaryDisplay/repeats:2_mean\",$"},
7245dda2efdSMircea Trofin {"\"family_index\": 20,$", MR_Next},
7255dda2efdSMircea Trofin {"\"per_family_instance_index\": 0,$", MR_Next},
7265dda2efdSMircea Trofin {"\"run_name\": \"BM_SummaryDisplay/repeats:2\",$", MR_Next},
7275dda2efdSMircea Trofin {"\"run_type\": \"aggregate\",$", MR_Next},
7285dda2efdSMircea Trofin {"\"repetitions\": 2,$", MR_Next},
7295dda2efdSMircea Trofin {"\"threads\": 1,$", MR_Next},
7305dda2efdSMircea Trofin {"\"aggregate_name\": \"mean\",$", MR_Next},
731a290770fSMircea Trofin {"\"aggregate_unit\": \"time\",$", MR_Next},
7325dda2efdSMircea Trofin {"\"iterations\": 2,$", MR_Next},
7335dda2efdSMircea Trofin {"\"name\": \"BM_SummaryDisplay/repeats:2_median\",$"},
7345dda2efdSMircea Trofin {"\"family_index\": 20,$", MR_Next},
7355dda2efdSMircea Trofin {"\"per_family_instance_index\": 0,$", MR_Next},
7365dda2efdSMircea Trofin {"\"run_name\": \"BM_SummaryDisplay/repeats:2\",$", MR_Next},
7375dda2efdSMircea Trofin {"\"run_type\": \"aggregate\",$", MR_Next},
7385dda2efdSMircea Trofin {"\"repetitions\": 2,$", MR_Next},
7395dda2efdSMircea Trofin {"\"threads\": 1,$", MR_Next},
7405dda2efdSMircea Trofin {"\"aggregate_name\": \"median\",$", MR_Next},
741a290770fSMircea Trofin {"\"aggregate_unit\": \"time\",$", MR_Next},
7425dda2efdSMircea Trofin {"\"iterations\": 2,$", MR_Next},
7435dda2efdSMircea Trofin {"\"name\": \"BM_SummaryDisplay/repeats:2_stddev\",$"},
7445dda2efdSMircea Trofin {"\"family_index\": 20,$", MR_Next},
7455dda2efdSMircea Trofin {"\"per_family_instance_index\": 0,$", MR_Next},
7465dda2efdSMircea Trofin {"\"run_name\": \"BM_SummaryDisplay/repeats:2\",$", MR_Next},
7475dda2efdSMircea Trofin {"\"run_type\": \"aggregate\",$", MR_Next},
7485dda2efdSMircea Trofin {"\"repetitions\": 2,$", MR_Next},
7495dda2efdSMircea Trofin {"\"threads\": 1,$", MR_Next},
7505dda2efdSMircea Trofin {"\"aggregate_name\": \"stddev\",$", MR_Next},
751a290770fSMircea Trofin {"\"aggregate_unit\": \"time\",$", MR_Next},
7525dda2efdSMircea Trofin {"\"iterations\": 2,$", MR_Next}});
7535dda2efdSMircea Trofin ADD_CASES(TC_CSVOut,
7545dda2efdSMircea Trofin {{".*BM_SummaryDisplay/repeats:2 ", MR_Not},
7555dda2efdSMircea Trofin {"^\"BM_SummaryDisplay/repeats:2_mean\",%csv_report$"},
7565dda2efdSMircea Trofin {"^\"BM_SummaryDisplay/repeats:2_median\",%csv_report$"},
7575dda2efdSMircea Trofin {"^\"BM_SummaryDisplay/repeats:2_stddev\",%csv_report$"}});
7585dda2efdSMircea Trofin
7595dda2efdSMircea Trofin // Test repeats with custom time unit.
BM_RepeatTimeUnit(benchmark::State & state)7605dda2efdSMircea Trofin void BM_RepeatTimeUnit(benchmark::State& state) {
7615dda2efdSMircea Trofin for (auto _ : state) {
7625dda2efdSMircea Trofin }
7635dda2efdSMircea Trofin }
7645dda2efdSMircea Trofin BENCHMARK(BM_RepeatTimeUnit)
7655dda2efdSMircea Trofin ->Repetitions(3)
7665dda2efdSMircea Trofin ->ReportAggregatesOnly()
7675dda2efdSMircea Trofin ->Unit(benchmark::kMicrosecond);
7685dda2efdSMircea Trofin ADD_CASES(
7695dda2efdSMircea Trofin TC_ConsoleOut,
7705dda2efdSMircea Trofin {{".*BM_RepeatTimeUnit/repeats:3 ", MR_Not},
7715dda2efdSMircea Trofin {"^BM_RepeatTimeUnit/repeats:3_mean %console_us_time_only_report [ ]*3$"},
7725dda2efdSMircea Trofin {"^BM_RepeatTimeUnit/repeats:3_median %console_us_time_only_report [ "
7735dda2efdSMircea Trofin "]*3$"},
7745dda2efdSMircea Trofin {"^BM_RepeatTimeUnit/repeats:3_stddev %console_us_time_only_report [ "
7755dda2efdSMircea Trofin "]*3$"}});
7765dda2efdSMircea Trofin ADD_CASES(TC_JSONOut,
7775dda2efdSMircea Trofin {{".*BM_RepeatTimeUnit/repeats:3 ", MR_Not},
7785dda2efdSMircea Trofin {"\"name\": \"BM_RepeatTimeUnit/repeats:3_mean\",$"},
7795dda2efdSMircea Trofin {"\"family_index\": 21,$", MR_Next},
7805dda2efdSMircea Trofin {"\"per_family_instance_index\": 0,$", MR_Next},
7815dda2efdSMircea Trofin {"\"run_name\": \"BM_RepeatTimeUnit/repeats:3\",$", MR_Next},
7825dda2efdSMircea Trofin {"\"run_type\": \"aggregate\",$", MR_Next},
7835dda2efdSMircea Trofin {"\"repetitions\": 3,$", MR_Next},
7845dda2efdSMircea Trofin {"\"threads\": 1,$", MR_Next},
7855dda2efdSMircea Trofin {"\"aggregate_name\": \"mean\",$", MR_Next},
786a290770fSMircea Trofin {"\"aggregate_unit\": \"time\",$", MR_Next},
7875dda2efdSMircea Trofin {"\"iterations\": 3,$", MR_Next},
7885dda2efdSMircea Trofin {"\"time_unit\": \"us\",?$"},
7895dda2efdSMircea Trofin {"\"name\": \"BM_RepeatTimeUnit/repeats:3_median\",$"},
7905dda2efdSMircea Trofin {"\"family_index\": 21,$", MR_Next},
7915dda2efdSMircea Trofin {"\"per_family_instance_index\": 0,$", MR_Next},
7925dda2efdSMircea Trofin {"\"run_name\": \"BM_RepeatTimeUnit/repeats:3\",$", MR_Next},
7935dda2efdSMircea Trofin {"\"run_type\": \"aggregate\",$", MR_Next},
7945dda2efdSMircea Trofin {"\"repetitions\": 3,$", MR_Next},
7955dda2efdSMircea Trofin {"\"threads\": 1,$", MR_Next},
7965dda2efdSMircea Trofin {"\"aggregate_name\": \"median\",$", MR_Next},
797a290770fSMircea Trofin {"\"aggregate_unit\": \"time\",$", MR_Next},
7985dda2efdSMircea Trofin {"\"iterations\": 3,$", MR_Next},
7995dda2efdSMircea Trofin {"\"time_unit\": \"us\",?$"},
8005dda2efdSMircea Trofin {"\"name\": \"BM_RepeatTimeUnit/repeats:3_stddev\",$"},
8015dda2efdSMircea Trofin {"\"family_index\": 21,$", MR_Next},
8025dda2efdSMircea Trofin {"\"per_family_instance_index\": 0,$", MR_Next},
8035dda2efdSMircea Trofin {"\"run_name\": \"BM_RepeatTimeUnit/repeats:3\",$", MR_Next},
8045dda2efdSMircea Trofin {"\"run_type\": \"aggregate\",$", MR_Next},
8055dda2efdSMircea Trofin {"\"repetitions\": 3,$", MR_Next},
8065dda2efdSMircea Trofin {"\"threads\": 1,$", MR_Next},
8075dda2efdSMircea Trofin {"\"aggregate_name\": \"stddev\",$", MR_Next},
808a290770fSMircea Trofin {"\"aggregate_unit\": \"time\",$", MR_Next},
8095dda2efdSMircea Trofin {"\"iterations\": 3,$", MR_Next},
8105dda2efdSMircea Trofin {"\"time_unit\": \"us\",?$"}});
8115dda2efdSMircea Trofin ADD_CASES(TC_CSVOut,
8125dda2efdSMircea Trofin {{".*BM_RepeatTimeUnit/repeats:3 ", MR_Not},
8135dda2efdSMircea Trofin {"^\"BM_RepeatTimeUnit/repeats:3_mean\",%csv_us_report$"},
8145dda2efdSMircea Trofin {"^\"BM_RepeatTimeUnit/repeats:3_median\",%csv_us_report$"},
8155dda2efdSMircea Trofin {"^\"BM_RepeatTimeUnit/repeats:3_stddev\",%csv_us_report$"}});
8165dda2efdSMircea Trofin
8175dda2efdSMircea Trofin // ========================================================================= //
8185dda2efdSMircea Trofin // -------------------- Testing user-provided statistics ------------------- //
8195dda2efdSMircea Trofin // ========================================================================= //
8205dda2efdSMircea Trofin
__anonb29969a80102(const std::vector<double>& v) 8215dda2efdSMircea Trofin const auto UserStatistics = [](const std::vector<double>& v) {
8225dda2efdSMircea Trofin return v.back();
8235dda2efdSMircea Trofin };
BM_UserStats(benchmark::State & state)8245dda2efdSMircea Trofin void BM_UserStats(benchmark::State& state) {
8255dda2efdSMircea Trofin for (auto _ : state) {
8265dda2efdSMircea Trofin state.SetIterationTime(150 / 10e8);
8275dda2efdSMircea Trofin }
8285dda2efdSMircea Trofin }
8295dda2efdSMircea Trofin // clang-format off
8305dda2efdSMircea Trofin BENCHMARK(BM_UserStats)
8315dda2efdSMircea Trofin ->Repetitions(3)
8325dda2efdSMircea Trofin ->Iterations(5)
8335dda2efdSMircea Trofin ->UseManualTime()
8345dda2efdSMircea Trofin ->ComputeStatistics("", UserStatistics);
8355dda2efdSMircea Trofin // clang-format on
8365dda2efdSMircea Trofin
8375dda2efdSMircea Trofin // check that user-provided stats is calculated, and is after the default-ones
8385dda2efdSMircea Trofin // empty string as name is intentional, it would sort before anything else
8395dda2efdSMircea Trofin ADD_CASES(TC_ConsoleOut, {{"^BM_UserStats/iterations:5/repeats:3/manual_time [ "
8405dda2efdSMircea Trofin "]* 150 ns %time [ ]*5$"},
8415dda2efdSMircea Trofin {"^BM_UserStats/iterations:5/repeats:3/manual_time [ "
8425dda2efdSMircea Trofin "]* 150 ns %time [ ]*5$"},
8435dda2efdSMircea Trofin {"^BM_UserStats/iterations:5/repeats:3/manual_time [ "
8445dda2efdSMircea Trofin "]* 150 ns %time [ ]*5$"},
8455dda2efdSMircea Trofin {"^BM_UserStats/iterations:5/repeats:3/"
8465dda2efdSMircea Trofin "manual_time_mean [ ]* 150 ns %time [ ]*3$"},
8475dda2efdSMircea Trofin {"^BM_UserStats/iterations:5/repeats:3/"
8485dda2efdSMircea Trofin "manual_time_median [ ]* 150 ns %time [ ]*3$"},
8495dda2efdSMircea Trofin {"^BM_UserStats/iterations:5/repeats:3/"
8505dda2efdSMircea Trofin "manual_time_stddev [ ]* 0.000 ns %time [ ]*3$"},
8515dda2efdSMircea Trofin {"^BM_UserStats/iterations:5/repeats:3/manual_time_ "
8525dda2efdSMircea Trofin "[ ]* 150 ns %time [ ]*3$"}});
8535dda2efdSMircea Trofin ADD_CASES(
8545dda2efdSMircea Trofin TC_JSONOut,
8555dda2efdSMircea Trofin {{"\"name\": \"BM_UserStats/iterations:5/repeats:3/manual_time\",$"},
8565dda2efdSMircea Trofin {"\"family_index\": 22,$", MR_Next},
8575dda2efdSMircea Trofin {"\"per_family_instance_index\": 0,$", MR_Next},
8585dda2efdSMircea Trofin {"\"run_name\": \"BM_UserStats/iterations:5/repeats:3/manual_time\",$",
8595dda2efdSMircea Trofin MR_Next},
8605dda2efdSMircea Trofin {"\"run_type\": \"iteration\",$", MR_Next},
8615dda2efdSMircea Trofin {"\"repetitions\": 3,$", MR_Next},
8625dda2efdSMircea Trofin {"\"repetition_index\": 0,$", MR_Next},
8635dda2efdSMircea Trofin {"\"threads\": 1,$", MR_Next},
8645dda2efdSMircea Trofin {"\"iterations\": 5,$", MR_Next},
8655dda2efdSMircea Trofin {"\"real_time\": 1\\.5(0)*e\\+(0)*2,$", MR_Next},
8665dda2efdSMircea Trofin {"\"name\": \"BM_UserStats/iterations:5/repeats:3/manual_time\",$"},
8675dda2efdSMircea Trofin {"\"family_index\": 22,$", MR_Next},
8685dda2efdSMircea Trofin {"\"per_family_instance_index\": 0,$", MR_Next},
8695dda2efdSMircea Trofin {"\"run_name\": \"BM_UserStats/iterations:5/repeats:3/manual_time\",$",
8705dda2efdSMircea Trofin MR_Next},
8715dda2efdSMircea Trofin {"\"run_type\": \"iteration\",$", MR_Next},
8725dda2efdSMircea Trofin {"\"repetitions\": 3,$", MR_Next},
8735dda2efdSMircea Trofin {"\"repetition_index\": 1,$", MR_Next},
8745dda2efdSMircea Trofin {"\"threads\": 1,$", MR_Next},
8755dda2efdSMircea Trofin {"\"iterations\": 5,$", MR_Next},
8765dda2efdSMircea Trofin {"\"real_time\": 1\\.5(0)*e\\+(0)*2,$", MR_Next},
8775dda2efdSMircea Trofin {"\"name\": \"BM_UserStats/iterations:5/repeats:3/manual_time\",$"},
8785dda2efdSMircea Trofin {"\"family_index\": 22,$", MR_Next},
8795dda2efdSMircea Trofin {"\"per_family_instance_index\": 0,$", MR_Next},
8805dda2efdSMircea Trofin {"\"run_name\": \"BM_UserStats/iterations:5/repeats:3/manual_time\",$",
8815dda2efdSMircea Trofin MR_Next},
8825dda2efdSMircea Trofin {"\"run_type\": \"iteration\",$", MR_Next},
8835dda2efdSMircea Trofin {"\"repetitions\": 3,$", MR_Next},
8845dda2efdSMircea Trofin {"\"repetition_index\": 2,$", MR_Next},
8855dda2efdSMircea Trofin {"\"threads\": 1,$", MR_Next},
8865dda2efdSMircea Trofin {"\"iterations\": 5,$", MR_Next},
8875dda2efdSMircea Trofin {"\"real_time\": 1\\.5(0)*e\\+(0)*2,$", MR_Next},
8885dda2efdSMircea Trofin {"\"name\": \"BM_UserStats/iterations:5/repeats:3/manual_time_mean\",$"},
8895dda2efdSMircea Trofin {"\"family_index\": 22,$", MR_Next},
8905dda2efdSMircea Trofin {"\"per_family_instance_index\": 0,$", MR_Next},
8915dda2efdSMircea Trofin {"\"run_name\": \"BM_UserStats/iterations:5/repeats:3/manual_time\",$",
8925dda2efdSMircea Trofin MR_Next},
8935dda2efdSMircea Trofin {"\"run_type\": \"aggregate\",$", MR_Next},
8945dda2efdSMircea Trofin {"\"repetitions\": 3,$", MR_Next},
8955dda2efdSMircea Trofin {"\"threads\": 1,$", MR_Next},
8965dda2efdSMircea Trofin {"\"aggregate_name\": \"mean\",$", MR_Next},
897a290770fSMircea Trofin {"\"aggregate_unit\": \"time\",$", MR_Next},
8985dda2efdSMircea Trofin {"\"iterations\": 3,$", MR_Next},
8995dda2efdSMircea Trofin {"\"real_time\": 1\\.5(0)*e\\+(0)*2,$", MR_Next},
9005dda2efdSMircea Trofin {"\"name\": \"BM_UserStats/iterations:5/repeats:3/manual_time_median\",$"},
9015dda2efdSMircea Trofin {"\"family_index\": 22,$", MR_Next},
9025dda2efdSMircea Trofin {"\"per_family_instance_index\": 0,$", MR_Next},
9035dda2efdSMircea Trofin {"\"run_name\": \"BM_UserStats/iterations:5/repeats:3/manual_time\",$",
9045dda2efdSMircea Trofin MR_Next},
9055dda2efdSMircea Trofin {"\"run_type\": \"aggregate\",$", MR_Next},
9065dda2efdSMircea Trofin {"\"repetitions\": 3,$", MR_Next},
9075dda2efdSMircea Trofin {"\"threads\": 1,$", MR_Next},
9085dda2efdSMircea Trofin {"\"aggregate_name\": \"median\",$", MR_Next},
909a290770fSMircea Trofin {"\"aggregate_unit\": \"time\",$", MR_Next},
9105dda2efdSMircea Trofin {"\"iterations\": 3,$", MR_Next},
9115dda2efdSMircea Trofin {"\"real_time\": 1\\.5(0)*e\\+(0)*2,$", MR_Next},
9125dda2efdSMircea Trofin {"\"name\": \"BM_UserStats/iterations:5/repeats:3/manual_time_stddev\",$"},
9135dda2efdSMircea Trofin {"\"family_index\": 22,$", MR_Next},
9145dda2efdSMircea Trofin {"\"per_family_instance_index\": 0,$", MR_Next},
9155dda2efdSMircea Trofin {"\"run_name\": \"BM_UserStats/iterations:5/repeats:3/manual_time\",$",
9165dda2efdSMircea Trofin MR_Next},
9175dda2efdSMircea Trofin {"\"run_type\": \"aggregate\",$", MR_Next},
9185dda2efdSMircea Trofin {"\"repetitions\": 3,$", MR_Next},
9195dda2efdSMircea Trofin {"\"threads\": 1,$", MR_Next},
9205dda2efdSMircea Trofin {"\"aggregate_name\": \"stddev\",$", MR_Next},
921a290770fSMircea Trofin {"\"aggregate_unit\": \"time\",$", MR_Next},
9225dda2efdSMircea Trofin {"\"iterations\": 3,$", MR_Next},
9235dda2efdSMircea Trofin {"\"real_time\": %float,$", MR_Next},
9245dda2efdSMircea Trofin {"\"name\": \"BM_UserStats/iterations:5/repeats:3/manual_time_\",$"},
9255dda2efdSMircea Trofin {"\"family_index\": 22,$", MR_Next},
9265dda2efdSMircea Trofin {"\"per_family_instance_index\": 0,$", MR_Next},
9275dda2efdSMircea Trofin {"\"run_name\": \"BM_UserStats/iterations:5/repeats:3/manual_time\",$",
9285dda2efdSMircea Trofin MR_Next},
9295dda2efdSMircea Trofin {"\"run_type\": \"aggregate\",$", MR_Next},
9305dda2efdSMircea Trofin {"\"repetitions\": 3,$", MR_Next},
9315dda2efdSMircea Trofin {"\"threads\": 1,$", MR_Next},
9325dda2efdSMircea Trofin {"\"aggregate_name\": \"\",$", MR_Next},
933a290770fSMircea Trofin {"\"aggregate_unit\": \"time\",$", MR_Next},
9345dda2efdSMircea Trofin {"\"iterations\": 3,$", MR_Next},
9355dda2efdSMircea Trofin {"\"real_time\": 1\\.5(0)*e\\+(0)*2,$", MR_Next}});
9365dda2efdSMircea Trofin ADD_CASES(
9375dda2efdSMircea Trofin TC_CSVOut,
9385dda2efdSMircea Trofin {{"^\"BM_UserStats/iterations:5/repeats:3/manual_time\",%csv_report$"},
9395dda2efdSMircea Trofin {"^\"BM_UserStats/iterations:5/repeats:3/manual_time\",%csv_report$"},
9405dda2efdSMircea Trofin {"^\"BM_UserStats/iterations:5/repeats:3/manual_time\",%csv_report$"},
9415dda2efdSMircea Trofin {"^\"BM_UserStats/iterations:5/repeats:3/manual_time_mean\",%csv_report$"},
9425dda2efdSMircea Trofin {"^\"BM_UserStats/iterations:5/repeats:3/"
9435dda2efdSMircea Trofin "manual_time_median\",%csv_report$"},
9445dda2efdSMircea Trofin {"^\"BM_UserStats/iterations:5/repeats:3/"
9455dda2efdSMircea Trofin "manual_time_stddev\",%csv_report$"},
9465dda2efdSMircea Trofin {"^\"BM_UserStats/iterations:5/repeats:3/manual_time_\",%csv_report$"}});
9475dda2efdSMircea Trofin
9485dda2efdSMircea Trofin // ========================================================================= //
949a290770fSMircea Trofin // ------------- Testing relative standard deviation statistics ------------ //
950a290770fSMircea Trofin // ========================================================================= //
951a290770fSMircea Trofin
__anonb29969a80202(const std::vector<double>&) 952a290770fSMircea Trofin const auto UserPercentStatistics = [](const std::vector<double>&) {
953a290770fSMircea Trofin return 1. / 100.;
954a290770fSMircea Trofin };
BM_UserPercentStats(benchmark::State & state)955a290770fSMircea Trofin void BM_UserPercentStats(benchmark::State& state) {
956a290770fSMircea Trofin for (auto _ : state) {
957a290770fSMircea Trofin state.SetIterationTime(150 / 10e8);
958a290770fSMircea Trofin }
959a290770fSMircea Trofin }
960a290770fSMircea Trofin // clang-format off
961a290770fSMircea Trofin BENCHMARK(BM_UserPercentStats)
962a290770fSMircea Trofin ->Repetitions(3)
963a290770fSMircea Trofin ->Iterations(5)
964a290770fSMircea Trofin ->UseManualTime()
965a290770fSMircea Trofin ->Unit(benchmark::TimeUnit::kNanosecond)
966a290770fSMircea Trofin ->ComputeStatistics("", UserPercentStatistics, benchmark::StatisticUnit::kPercentage);
967a290770fSMircea Trofin // clang-format on
968a290770fSMircea Trofin
969a290770fSMircea Trofin // check that UserPercent-provided stats is calculated, and is after the
970a290770fSMircea Trofin // default-ones empty string as name is intentional, it would sort before
971a290770fSMircea Trofin // anything else
972a290770fSMircea Trofin ADD_CASES(TC_ConsoleOut,
973a290770fSMircea Trofin {{"^BM_UserPercentStats/iterations:5/repeats:3/manual_time [ "
974a290770fSMircea Trofin "]* 150 ns %time [ ]*5$"},
975a290770fSMircea Trofin {"^BM_UserPercentStats/iterations:5/repeats:3/manual_time [ "
976a290770fSMircea Trofin "]* 150 ns %time [ ]*5$"},
977a290770fSMircea Trofin {"^BM_UserPercentStats/iterations:5/repeats:3/manual_time [ "
978a290770fSMircea Trofin "]* 150 ns %time [ ]*5$"},
979a290770fSMircea Trofin {"^BM_UserPercentStats/iterations:5/repeats:3/"
980a290770fSMircea Trofin "manual_time_mean [ ]* 150 ns %time [ ]*3$"},
981a290770fSMircea Trofin {"^BM_UserPercentStats/iterations:5/repeats:3/"
982a290770fSMircea Trofin "manual_time_median [ ]* 150 ns %time [ ]*3$"},
983a290770fSMircea Trofin {"^BM_UserPercentStats/iterations:5/repeats:3/"
984a290770fSMircea Trofin "manual_time_stddev [ ]* 0.000 ns %time [ ]*3$"},
985a290770fSMircea Trofin {"^BM_UserPercentStats/iterations:5/repeats:3/manual_time_ "
986a290770fSMircea Trofin "[ ]* 1.00 % [ ]* 1.00 %[ ]*3$"}});
987a290770fSMircea Trofin ADD_CASES(
988a290770fSMircea Trofin TC_JSONOut,
989a290770fSMircea Trofin {{"\"name\": \"BM_UserPercentStats/iterations:5/repeats:3/manual_time\",$"},
990a290770fSMircea Trofin {"\"family_index\": 23,$", MR_Next},
991a290770fSMircea Trofin {"\"per_family_instance_index\": 0,$", MR_Next},
992a290770fSMircea Trofin {"\"run_name\": "
993a290770fSMircea Trofin "\"BM_UserPercentStats/iterations:5/repeats:3/manual_time\",$",
994a290770fSMircea Trofin MR_Next},
995a290770fSMircea Trofin {"\"run_type\": \"iteration\",$", MR_Next},
996a290770fSMircea Trofin {"\"repetitions\": 3,$", MR_Next},
997a290770fSMircea Trofin {"\"repetition_index\": 0,$", MR_Next},
998a290770fSMircea Trofin {"\"threads\": 1,$", MR_Next},
999a290770fSMircea Trofin {"\"iterations\": 5,$", MR_Next},
1000a290770fSMircea Trofin {"\"real_time\": 1\\.5(0)*e\\+(0)*2,$", MR_Next},
1001a290770fSMircea Trofin {"\"name\": \"BM_UserPercentStats/iterations:5/repeats:3/manual_time\",$"},
1002a290770fSMircea Trofin {"\"family_index\": 23,$", MR_Next},
1003a290770fSMircea Trofin {"\"per_family_instance_index\": 0,$", MR_Next},
1004a290770fSMircea Trofin {"\"run_name\": "
1005a290770fSMircea Trofin "\"BM_UserPercentStats/iterations:5/repeats:3/manual_time\",$",
1006a290770fSMircea Trofin MR_Next},
1007a290770fSMircea Trofin {"\"run_type\": \"iteration\",$", MR_Next},
1008a290770fSMircea Trofin {"\"repetitions\": 3,$", MR_Next},
1009a290770fSMircea Trofin {"\"repetition_index\": 1,$", MR_Next},
1010a290770fSMircea Trofin {"\"threads\": 1,$", MR_Next},
1011a290770fSMircea Trofin {"\"iterations\": 5,$", MR_Next},
1012a290770fSMircea Trofin {"\"real_time\": 1\\.5(0)*e\\+(0)*2,$", MR_Next},
1013a290770fSMircea Trofin {"\"name\": \"BM_UserPercentStats/iterations:5/repeats:3/manual_time\",$"},
1014a290770fSMircea Trofin {"\"family_index\": 23,$", MR_Next},
1015a290770fSMircea Trofin {"\"per_family_instance_index\": 0,$", MR_Next},
1016a290770fSMircea Trofin {"\"run_name\": "
1017a290770fSMircea Trofin "\"BM_UserPercentStats/iterations:5/repeats:3/manual_time\",$",
1018a290770fSMircea Trofin MR_Next},
1019a290770fSMircea Trofin {"\"run_type\": \"iteration\",$", MR_Next},
1020a290770fSMircea Trofin {"\"repetitions\": 3,$", MR_Next},
1021a290770fSMircea Trofin {"\"repetition_index\": 2,$", MR_Next},
1022a290770fSMircea Trofin {"\"threads\": 1,$", MR_Next},
1023a290770fSMircea Trofin {"\"iterations\": 5,$", MR_Next},
1024a290770fSMircea Trofin {"\"real_time\": 1\\.5(0)*e\\+(0)*2,$", MR_Next},
1025a290770fSMircea Trofin {"\"name\": "
1026a290770fSMircea Trofin "\"BM_UserPercentStats/iterations:5/repeats:3/manual_time_mean\",$"},
1027a290770fSMircea Trofin {"\"family_index\": 23,$", MR_Next},
1028a290770fSMircea Trofin {"\"per_family_instance_index\": 0,$", MR_Next},
1029a290770fSMircea Trofin {"\"run_name\": "
1030a290770fSMircea Trofin "\"BM_UserPercentStats/iterations:5/repeats:3/manual_time\",$",
1031a290770fSMircea Trofin MR_Next},
1032a290770fSMircea Trofin {"\"run_type\": \"aggregate\",$", MR_Next},
1033a290770fSMircea Trofin {"\"repetitions\": 3,$", MR_Next},
1034a290770fSMircea Trofin {"\"threads\": 1,$", MR_Next},
1035a290770fSMircea Trofin {"\"aggregate_name\": \"mean\",$", MR_Next},
1036a290770fSMircea Trofin {"\"aggregate_unit\": \"time\",$", MR_Next},
1037a290770fSMircea Trofin {"\"iterations\": 3,$", MR_Next},
1038a290770fSMircea Trofin {"\"real_time\": 1\\.5(0)*e\\+(0)*2,$", MR_Next},
1039a290770fSMircea Trofin {"\"name\": "
1040a290770fSMircea Trofin "\"BM_UserPercentStats/iterations:5/repeats:3/manual_time_median\",$"},
1041a290770fSMircea Trofin {"\"family_index\": 23,$", MR_Next},
1042a290770fSMircea Trofin {"\"per_family_instance_index\": 0,$", MR_Next},
1043a290770fSMircea Trofin {"\"run_name\": "
1044a290770fSMircea Trofin "\"BM_UserPercentStats/iterations:5/repeats:3/manual_time\",$",
1045a290770fSMircea Trofin MR_Next},
1046a290770fSMircea Trofin {"\"run_type\": \"aggregate\",$", MR_Next},
1047a290770fSMircea Trofin {"\"repetitions\": 3,$", MR_Next},
1048a290770fSMircea Trofin {"\"threads\": 1,$", MR_Next},
1049a290770fSMircea Trofin {"\"aggregate_name\": \"median\",$", MR_Next},
1050a290770fSMircea Trofin {"\"aggregate_unit\": \"time\",$", MR_Next},
1051a290770fSMircea Trofin {"\"iterations\": 3,$", MR_Next},
1052a290770fSMircea Trofin {"\"real_time\": 1\\.5(0)*e\\+(0)*2,$", MR_Next},
1053a290770fSMircea Trofin {"\"name\": "
1054a290770fSMircea Trofin "\"BM_UserPercentStats/iterations:5/repeats:3/manual_time_stddev\",$"},
1055a290770fSMircea Trofin {"\"family_index\": 23,$", MR_Next},
1056a290770fSMircea Trofin {"\"per_family_instance_index\": 0,$", MR_Next},
1057a290770fSMircea Trofin {"\"run_name\": "
1058a290770fSMircea Trofin "\"BM_UserPercentStats/iterations:5/repeats:3/manual_time\",$",
1059a290770fSMircea Trofin MR_Next},
1060a290770fSMircea Trofin {"\"run_type\": \"aggregate\",$", MR_Next},
1061a290770fSMircea Trofin {"\"repetitions\": 3,$", MR_Next},
1062a290770fSMircea Trofin {"\"threads\": 1,$", MR_Next},
1063a290770fSMircea Trofin {"\"aggregate_name\": \"stddev\",$", MR_Next},
1064a290770fSMircea Trofin {"\"aggregate_unit\": \"time\",$", MR_Next},
1065a290770fSMircea Trofin {"\"iterations\": 3,$", MR_Next},
1066a290770fSMircea Trofin {"\"real_time\": %float,$", MR_Next},
1067a290770fSMircea Trofin {"\"name\": "
1068a290770fSMircea Trofin "\"BM_UserPercentStats/iterations:5/repeats:3/manual_time_\",$"},
1069a290770fSMircea Trofin {"\"family_index\": 23,$", MR_Next},
1070a290770fSMircea Trofin {"\"per_family_instance_index\": 0,$", MR_Next},
1071a290770fSMircea Trofin {"\"run_name\": "
1072a290770fSMircea Trofin "\"BM_UserPercentStats/iterations:5/repeats:3/manual_time\",$",
1073a290770fSMircea Trofin MR_Next},
1074a290770fSMircea Trofin {"\"run_type\": \"aggregate\",$", MR_Next},
1075a290770fSMircea Trofin {"\"repetitions\": 3,$", MR_Next},
1076a290770fSMircea Trofin {"\"threads\": 1,$", MR_Next},
1077a290770fSMircea Trofin {"\"aggregate_name\": \"\",$", MR_Next},
1078a290770fSMircea Trofin {"\"aggregate_unit\": \"percentage\",$", MR_Next},
1079a290770fSMircea Trofin {"\"iterations\": 3,$", MR_Next},
1080a290770fSMircea Trofin {"\"real_time\": 1\\.(0)*e-(0)*2,$", MR_Next}});
1081a290770fSMircea Trofin ADD_CASES(TC_CSVOut, {{"^\"BM_UserPercentStats/iterations:5/repeats:3/"
1082a290770fSMircea Trofin "manual_time\",%csv_report$"},
1083a290770fSMircea Trofin {"^\"BM_UserPercentStats/iterations:5/repeats:3/"
1084a290770fSMircea Trofin "manual_time\",%csv_report$"},
1085a290770fSMircea Trofin {"^\"BM_UserPercentStats/iterations:5/repeats:3/"
1086a290770fSMircea Trofin "manual_time\",%csv_report$"},
1087a290770fSMircea Trofin {"^\"BM_UserPercentStats/iterations:5/repeats:3/"
1088a290770fSMircea Trofin "manual_time_mean\",%csv_report$"},
1089a290770fSMircea Trofin {"^\"BM_UserPercentStats/iterations:5/repeats:3/"
1090a290770fSMircea Trofin "manual_time_median\",%csv_report$"},
1091a290770fSMircea Trofin {"^\"BM_UserPercentStats/iterations:5/repeats:3/"
1092a290770fSMircea Trofin "manual_time_stddev\",%csv_report$"},
1093a290770fSMircea Trofin {"^\"BM_UserPercentStats/iterations:5/repeats:3/"
1094*a5b79717SMircea Trofin "manual_time_\",%csv_cv_report$"}});
1095a290770fSMircea Trofin
1096a290770fSMircea Trofin // ========================================================================= //
10975dda2efdSMircea Trofin // ------------------------- Testing StrEscape JSON ------------------------ //
10985dda2efdSMircea Trofin // ========================================================================= //
10995dda2efdSMircea Trofin #if 0 // enable when csv testing code correctly handles multi-line fields
11005dda2efdSMircea Trofin void BM_JSON_Format(benchmark::State& state) {
11015dda2efdSMircea Trofin state.SkipWithError("val\b\f\n\r\t\\\"with\"es,capes");
11025dda2efdSMircea Trofin for (auto _ : state) {
11035dda2efdSMircea Trofin }
11045dda2efdSMircea Trofin }
11055dda2efdSMircea Trofin BENCHMARK(BM_JSON_Format);
11065dda2efdSMircea Trofin ADD_CASES(TC_JSONOut, {{"\"name\": \"BM_JSON_Format\",$"},
11075dda2efdSMircea Trofin {"\"family_index\": 23,$", MR_Next},
11085dda2efdSMircea Trofin {"\"per_family_instance_index\": 0,$", MR_Next},
11095dda2efdSMircea Trofin {"\"run_name\": \"BM_JSON_Format\",$", MR_Next},
11105dda2efdSMircea Trofin {"\"run_type\": \"iteration\",$", MR_Next},
11115dda2efdSMircea Trofin {"\"repetitions\": 1,$", MR_Next},
11125dda2efdSMircea Trofin {"\"repetition_index\": 0,$", MR_Next},
11135dda2efdSMircea Trofin {"\"threads\": 1,$", MR_Next},
11145dda2efdSMircea Trofin {"\"error_occurred\": true,$", MR_Next},
11155dda2efdSMircea Trofin {R"("error_message": "val\\b\\f\\n\\r\\t\\\\\\"with\\"es,capes",$)", MR_Next}});
11165dda2efdSMircea Trofin #endif
11175dda2efdSMircea Trofin // ========================================================================= //
11185dda2efdSMircea Trofin // -------------------------- Testing CsvEscape ---------------------------- //
11195dda2efdSMircea Trofin // ========================================================================= //
11205dda2efdSMircea Trofin
BM_CSV_Format(benchmark::State & state)11215dda2efdSMircea Trofin void BM_CSV_Format(benchmark::State& state) {
11225dda2efdSMircea Trofin state.SkipWithError("\"freedom\"");
11235dda2efdSMircea Trofin for (auto _ : state) {
11245dda2efdSMircea Trofin }
11255dda2efdSMircea Trofin }
11265dda2efdSMircea Trofin BENCHMARK(BM_CSV_Format);
11275dda2efdSMircea Trofin ADD_CASES(TC_CSVOut, {{"^\"BM_CSV_Format\",,,,,,,,true,\"\"\"freedom\"\"\"$"}});
11285dda2efdSMircea Trofin
11295dda2efdSMircea Trofin // ========================================================================= //
11305dda2efdSMircea Trofin // --------------------------- TEST CASES END ------------------------------ //
11315dda2efdSMircea Trofin // ========================================================================= //
11325dda2efdSMircea Trofin
main(int argc,char * argv[])11335dda2efdSMircea Trofin int main(int argc, char* argv[]) { RunOutputTests(argc, argv); }
1134