xref: /llvm-project/third-party/benchmark/test/user_counters_thousands_test.cc (revision a5b797172cc902db166e9a695716fb81405f86e4)
15dda2efdSMircea Trofin 
25dda2efdSMircea Trofin #undef NDEBUG
35dda2efdSMircea Trofin 
45dda2efdSMircea Trofin #include "benchmark/benchmark.h"
55dda2efdSMircea Trofin #include "output_test.h"
65dda2efdSMircea Trofin 
75dda2efdSMircea Trofin // ========================================================================= //
85dda2efdSMircea Trofin // ------------------------ Thousands Customisation ------------------------ //
95dda2efdSMircea Trofin // ========================================================================= //
105dda2efdSMircea Trofin 
BM_Counters_Thousands(benchmark::State & state)115dda2efdSMircea Trofin void BM_Counters_Thousands(benchmark::State& state) {
125dda2efdSMircea Trofin   for (auto _ : state) {
135dda2efdSMircea Trofin   }
145dda2efdSMircea Trofin   namespace bm = benchmark;
155dda2efdSMircea Trofin   state.counters.insert({
165dda2efdSMircea Trofin       {"t0_1000000DefaultBase",
175dda2efdSMircea Trofin        bm::Counter(1000 * 1000, bm::Counter::kDefaults)},
185dda2efdSMircea Trofin       {"t1_1000000Base1000", bm::Counter(1000 * 1000, bm::Counter::kDefaults,
19*a5b79717SMircea Trofin                                          bm::Counter::OneK::kIs1000)},
205dda2efdSMircea Trofin       {"t2_1000000Base1024", bm::Counter(1000 * 1000, bm::Counter::kDefaults,
21*a5b79717SMircea Trofin                                          bm::Counter::OneK::kIs1024)},
225dda2efdSMircea Trofin       {"t3_1048576Base1000", bm::Counter(1024 * 1024, bm::Counter::kDefaults,
23*a5b79717SMircea Trofin                                          bm::Counter::OneK::kIs1000)},
245dda2efdSMircea Trofin       {"t4_1048576Base1024", bm::Counter(1024 * 1024, bm::Counter::kDefaults,
25*a5b79717SMircea Trofin                                          bm::Counter::OneK::kIs1024)},
265dda2efdSMircea Trofin   });
275dda2efdSMircea Trofin }
285dda2efdSMircea Trofin BENCHMARK(BM_Counters_Thousands)->Repetitions(2);
295dda2efdSMircea Trofin ADD_CASES(
305dda2efdSMircea Trofin     TC_ConsoleOut,
315dda2efdSMircea Trofin     {
325dda2efdSMircea Trofin         {"^BM_Counters_Thousands/repeats:2 %console_report "
33*a5b79717SMircea Trofin          "t0_1000000DefaultBase=1M "
34*a5b79717SMircea Trofin          "t1_1000000Base1000=1M t2_1000000Base1024=976.56[23]Ki "
35*a5b79717SMircea Trofin          "t3_1048576Base1000=1.04858M t4_1048576Base1024=1Mi$"},
365dda2efdSMircea Trofin         {"^BM_Counters_Thousands/repeats:2 %console_report "
37*a5b79717SMircea Trofin          "t0_1000000DefaultBase=1M "
38*a5b79717SMircea Trofin          "t1_1000000Base1000=1M t2_1000000Base1024=976.56[23]Ki "
39*a5b79717SMircea Trofin          "t3_1048576Base1000=1.04858M t4_1048576Base1024=1Mi$"},
405dda2efdSMircea Trofin         {"^BM_Counters_Thousands/repeats:2_mean %console_report "
41*a5b79717SMircea Trofin          "t0_1000000DefaultBase=1M t1_1000000Base1000=1M "
42*a5b79717SMircea Trofin          "t2_1000000Base1024=976.56[23]Ki t3_1048576Base1000=1.04858M "
43*a5b79717SMircea Trofin          "t4_1048576Base1024=1Mi$"},
445dda2efdSMircea Trofin         {"^BM_Counters_Thousands/repeats:2_median %console_report "
45*a5b79717SMircea Trofin          "t0_1000000DefaultBase=1M t1_1000000Base1000=1M "
46*a5b79717SMircea Trofin          "t2_1000000Base1024=976.56[23]Ki t3_1048576Base1000=1.04858M "
47*a5b79717SMircea Trofin          "t4_1048576Base1024=1Mi$"},
485dda2efdSMircea Trofin         {"^BM_Counters_Thousands/repeats:2_stddev %console_time_only_report [ "
495dda2efdSMircea Trofin          "]*2 t0_1000000DefaultBase=0 t1_1000000Base1000=0 "
505dda2efdSMircea Trofin          "t2_1000000Base1024=0 t3_1048576Base1000=0 t4_1048576Base1024=0$"},
515dda2efdSMircea Trofin     });
525dda2efdSMircea Trofin ADD_CASES(TC_JSONOut,
535dda2efdSMircea Trofin           {{"\"name\": \"BM_Counters_Thousands/repeats:2\",$"},
545dda2efdSMircea Trofin            {"\"family_index\": 0,$", MR_Next},
555dda2efdSMircea Trofin            {"\"per_family_instance_index\": 0,$", MR_Next},
565dda2efdSMircea Trofin            {"\"run_name\": \"BM_Counters_Thousands/repeats:2\",$", MR_Next},
575dda2efdSMircea Trofin            {"\"run_type\": \"iteration\",$", MR_Next},
585dda2efdSMircea Trofin            {"\"repetitions\": 2,$", MR_Next},
595dda2efdSMircea Trofin            {"\"repetition_index\": 0,$", MR_Next},
605dda2efdSMircea Trofin            {"\"threads\": 1,$", MR_Next},
615dda2efdSMircea Trofin            {"\"iterations\": %int,$", MR_Next},
625dda2efdSMircea Trofin            {"\"real_time\": %float,$", MR_Next},
635dda2efdSMircea Trofin            {"\"cpu_time\": %float,$", MR_Next},
645dda2efdSMircea Trofin            {"\"time_unit\": \"ns\",$", MR_Next},
655dda2efdSMircea Trofin            {"\"t0_1000000DefaultBase\": 1\\.(0)*e\\+(0)*6,$", MR_Next},
665dda2efdSMircea Trofin            {"\"t1_1000000Base1000\": 1\\.(0)*e\\+(0)*6,$", MR_Next},
675dda2efdSMircea Trofin            {"\"t2_1000000Base1024\": 1\\.(0)*e\\+(0)*6,$", MR_Next},
685dda2efdSMircea Trofin            {"\"t3_1048576Base1000\": 1\\.048576(0)*e\\+(0)*6,$", MR_Next},
695dda2efdSMircea Trofin            {"\"t4_1048576Base1024\": 1\\.048576(0)*e\\+(0)*6$", MR_Next},
705dda2efdSMircea Trofin            {"}", MR_Next}});
715dda2efdSMircea Trofin ADD_CASES(TC_JSONOut,
725dda2efdSMircea Trofin           {{"\"name\": \"BM_Counters_Thousands/repeats:2\",$"},
735dda2efdSMircea Trofin            {"\"family_index\": 0,$", MR_Next},
745dda2efdSMircea Trofin            {"\"per_family_instance_index\": 0,$", MR_Next},
755dda2efdSMircea Trofin            {"\"run_name\": \"BM_Counters_Thousands/repeats:2\",$", MR_Next},
765dda2efdSMircea Trofin            {"\"run_type\": \"iteration\",$", MR_Next},
775dda2efdSMircea Trofin            {"\"repetitions\": 2,$", MR_Next},
785dda2efdSMircea Trofin            {"\"repetition_index\": 1,$", MR_Next},
795dda2efdSMircea Trofin            {"\"threads\": 1,$", MR_Next},
805dda2efdSMircea Trofin            {"\"iterations\": %int,$", MR_Next},
815dda2efdSMircea Trofin            {"\"real_time\": %float,$", MR_Next},
825dda2efdSMircea Trofin            {"\"cpu_time\": %float,$", MR_Next},
835dda2efdSMircea Trofin            {"\"time_unit\": \"ns\",$", MR_Next},
845dda2efdSMircea Trofin            {"\"t0_1000000DefaultBase\": 1\\.(0)*e\\+(0)*6,$", MR_Next},
855dda2efdSMircea Trofin            {"\"t1_1000000Base1000\": 1\\.(0)*e\\+(0)*6,$", MR_Next},
865dda2efdSMircea Trofin            {"\"t2_1000000Base1024\": 1\\.(0)*e\\+(0)*6,$", MR_Next},
875dda2efdSMircea Trofin            {"\"t3_1048576Base1000\": 1\\.048576(0)*e\\+(0)*6,$", MR_Next},
885dda2efdSMircea Trofin            {"\"t4_1048576Base1024\": 1\\.048576(0)*e\\+(0)*6$", MR_Next},
895dda2efdSMircea Trofin            {"}", MR_Next}});
905dda2efdSMircea Trofin ADD_CASES(TC_JSONOut,
915dda2efdSMircea Trofin           {{"\"name\": \"BM_Counters_Thousands/repeats:2_mean\",$"},
925dda2efdSMircea Trofin            {"\"family_index\": 0,$", MR_Next},
935dda2efdSMircea Trofin            {"\"per_family_instance_index\": 0,$", MR_Next},
945dda2efdSMircea Trofin            {"\"run_name\": \"BM_Counters_Thousands/repeats:2\",$", MR_Next},
955dda2efdSMircea Trofin            {"\"run_type\": \"aggregate\",$", MR_Next},
965dda2efdSMircea Trofin            {"\"repetitions\": 2,$", MR_Next},
975dda2efdSMircea Trofin            {"\"threads\": 1,$", MR_Next},
985dda2efdSMircea Trofin            {"\"aggregate_name\": \"mean\",$", MR_Next},
99a290770fSMircea Trofin            {"\"aggregate_unit\": \"time\",$", MR_Next},
1005dda2efdSMircea Trofin            {"\"iterations\": 2,$", MR_Next},
1015dda2efdSMircea Trofin            {"\"real_time\": %float,$", MR_Next},
1025dda2efdSMircea Trofin            {"\"cpu_time\": %float,$", MR_Next},
1035dda2efdSMircea Trofin            {"\"time_unit\": \"ns\",$", MR_Next},
1045dda2efdSMircea Trofin            {"\"t0_1000000DefaultBase\": 1\\.(0)*e\\+(0)*6,$", MR_Next},
1055dda2efdSMircea Trofin            {"\"t1_1000000Base1000\": 1\\.(0)*e\\+(0)*6,$", MR_Next},
1065dda2efdSMircea Trofin            {"\"t2_1000000Base1024\": 1\\.(0)*e\\+(0)*6,$", MR_Next},
1075dda2efdSMircea Trofin            {"\"t3_1048576Base1000\": 1\\.048576(0)*e\\+(0)*6,$", MR_Next},
1085dda2efdSMircea Trofin            {"\"t4_1048576Base1024\": 1\\.048576(0)*e\\+(0)*6$", MR_Next},
1095dda2efdSMircea Trofin            {"}", MR_Next}});
1105dda2efdSMircea Trofin ADD_CASES(TC_JSONOut,
1115dda2efdSMircea Trofin           {{"\"name\": \"BM_Counters_Thousands/repeats:2_median\",$"},
1125dda2efdSMircea Trofin            {"\"family_index\": 0,$", MR_Next},
1135dda2efdSMircea Trofin            {"\"per_family_instance_index\": 0,$", MR_Next},
1145dda2efdSMircea Trofin            {"\"run_name\": \"BM_Counters_Thousands/repeats:2\",$", MR_Next},
1155dda2efdSMircea Trofin            {"\"run_type\": \"aggregate\",$", MR_Next},
1165dda2efdSMircea Trofin            {"\"repetitions\": 2,$", MR_Next},
1175dda2efdSMircea Trofin            {"\"threads\": 1,$", MR_Next},
1185dda2efdSMircea Trofin            {"\"aggregate_name\": \"median\",$", MR_Next},
119a290770fSMircea Trofin            {"\"aggregate_unit\": \"time\",$", MR_Next},
1205dda2efdSMircea Trofin            {"\"iterations\": 2,$", MR_Next},
1215dda2efdSMircea Trofin            {"\"real_time\": %float,$", MR_Next},
1225dda2efdSMircea Trofin            {"\"cpu_time\": %float,$", MR_Next},
1235dda2efdSMircea Trofin            {"\"time_unit\": \"ns\",$", MR_Next},
1245dda2efdSMircea Trofin            {"\"t0_1000000DefaultBase\": 1\\.(0)*e\\+(0)*6,$", MR_Next},
1255dda2efdSMircea Trofin            {"\"t1_1000000Base1000\": 1\\.(0)*e\\+(0)*6,$", MR_Next},
1265dda2efdSMircea Trofin            {"\"t2_1000000Base1024\": 1\\.(0)*e\\+(0)*6,$", MR_Next},
1275dda2efdSMircea Trofin            {"\"t3_1048576Base1000\": 1\\.048576(0)*e\\+(0)*6,$", MR_Next},
1285dda2efdSMircea Trofin            {"\"t4_1048576Base1024\": 1\\.048576(0)*e\\+(0)*6$", MR_Next},
1295dda2efdSMircea Trofin            {"}", MR_Next}});
1305dda2efdSMircea Trofin ADD_CASES(TC_JSONOut,
1315dda2efdSMircea Trofin           {{"\"name\": \"BM_Counters_Thousands/repeats:2_stddev\",$"},
1325dda2efdSMircea Trofin            {"\"family_index\": 0,$", MR_Next},
1335dda2efdSMircea Trofin            {"\"per_family_instance_index\": 0,$", MR_Next},
1345dda2efdSMircea Trofin            {"\"run_name\": \"BM_Counters_Thousands/repeats:2\",$", MR_Next},
1355dda2efdSMircea Trofin            {"\"run_type\": \"aggregate\",$", MR_Next},
1365dda2efdSMircea Trofin            {"\"repetitions\": 2,$", MR_Next},
1375dda2efdSMircea Trofin            {"\"threads\": 1,$", MR_Next},
1385dda2efdSMircea Trofin            {"\"aggregate_name\": \"stddev\",$", MR_Next},
139a290770fSMircea Trofin            {"\"aggregate_unit\": \"time\",$", MR_Next},
1405dda2efdSMircea Trofin            {"\"iterations\": 2,$", MR_Next},
1415dda2efdSMircea Trofin            {"\"real_time\": %float,$", MR_Next},
1425dda2efdSMircea Trofin            {"\"cpu_time\": %float,$", MR_Next},
1435dda2efdSMircea Trofin            {"\"time_unit\": \"ns\",$", MR_Next},
1445dda2efdSMircea Trofin            {"\"t0_1000000DefaultBase\": 0\\.(0)*e\\+(0)*,$", MR_Next},
1455dda2efdSMircea Trofin            {"\"t1_1000000Base1000\": 0\\.(0)*e\\+(0)*,$", MR_Next},
1465dda2efdSMircea Trofin            {"\"t2_1000000Base1024\": 0\\.(0)*e\\+(0)*,$", MR_Next},
1475dda2efdSMircea Trofin            {"\"t3_1048576Base1000\": 0\\.(0)*e\\+(0)*,$", MR_Next},
1485dda2efdSMircea Trofin            {"\"t4_1048576Base1024\": 0\\.(0)*e\\+(0)*$", MR_Next},
1495dda2efdSMircea Trofin            {"}", MR_Next}});
1505dda2efdSMircea Trofin 
1515dda2efdSMircea Trofin ADD_CASES(
1525dda2efdSMircea Trofin     TC_CSVOut,
1535dda2efdSMircea Trofin     {{"^\"BM_Counters_Thousands/"
1545dda2efdSMircea Trofin       "repeats:2\",%csv_report,1e\\+(0)*6,1e\\+(0)*6,1e\\+(0)*6,1\\.04858e\\+("
1555dda2efdSMircea Trofin       "0)*6,1\\.04858e\\+(0)*6$"},
1565dda2efdSMircea Trofin      {"^\"BM_Counters_Thousands/"
1575dda2efdSMircea Trofin       "repeats:2\",%csv_report,1e\\+(0)*6,1e\\+(0)*6,1e\\+(0)*6,1\\.04858e\\+("
1585dda2efdSMircea Trofin       "0)*6,1\\.04858e\\+(0)*6$"},
1595dda2efdSMircea Trofin      {"^\"BM_Counters_Thousands/"
1605dda2efdSMircea Trofin       "repeats:2_mean\",%csv_report,1e\\+(0)*6,1e\\+(0)*6,1e\\+(0)*6,1\\."
1615dda2efdSMircea Trofin       "04858e\\+(0)*6,1\\.04858e\\+(0)*6$"},
1625dda2efdSMircea Trofin      {"^\"BM_Counters_Thousands/"
1635dda2efdSMircea Trofin       "repeats:2_median\",%csv_report,1e\\+(0)*6,1e\\+(0)*6,1e\\+(0)*6,1\\."
1645dda2efdSMircea Trofin       "04858e\\+(0)*6,1\\.04858e\\+(0)*6$"},
1655dda2efdSMircea Trofin      {"^\"BM_Counters_Thousands/repeats:2_stddev\",%csv_report,0,0,0,0,0$"}});
1665dda2efdSMircea Trofin // VS2013 does not allow this function to be passed as a lambda argument
1675dda2efdSMircea Trofin // to CHECK_BENCHMARK_RESULTS()
CheckThousands(Results const & e)1685dda2efdSMircea Trofin void CheckThousands(Results const& e) {
1695dda2efdSMircea Trofin   if (e.name != "BM_Counters_Thousands/repeats:2")
1705dda2efdSMircea Trofin     return;  // Do not check the aggregates!
1715dda2efdSMircea Trofin 
1725dda2efdSMircea Trofin   // check that the values are within 0.01% of the expected values
1735dda2efdSMircea Trofin   CHECK_FLOAT_COUNTER_VALUE(e, "t0_1000000DefaultBase", EQ, 1000 * 1000,
1745dda2efdSMircea Trofin                             0.0001);
1755dda2efdSMircea Trofin   CHECK_FLOAT_COUNTER_VALUE(e, "t1_1000000Base1000", EQ, 1000 * 1000, 0.0001);
1765dda2efdSMircea Trofin   CHECK_FLOAT_COUNTER_VALUE(e, "t2_1000000Base1024", EQ, 1000 * 1000, 0.0001);
1775dda2efdSMircea Trofin   CHECK_FLOAT_COUNTER_VALUE(e, "t3_1048576Base1000", EQ, 1024 * 1024, 0.0001);
1785dda2efdSMircea Trofin   CHECK_FLOAT_COUNTER_VALUE(e, "t4_1048576Base1024", EQ, 1024 * 1024, 0.0001);
1795dda2efdSMircea Trofin }
1805dda2efdSMircea Trofin CHECK_BENCHMARK_RESULTS("BM_Counters_Thousands", &CheckThousands);
1815dda2efdSMircea Trofin 
1825dda2efdSMircea Trofin // ========================================================================= //
1835dda2efdSMircea Trofin // --------------------------- TEST CASES END ------------------------------ //
1845dda2efdSMircea Trofin // ========================================================================= //
1855dda2efdSMircea Trofin 
main(int argc,char * argv[])1865dda2efdSMircea Trofin int main(int argc, char* argv[]) { RunOutputTests(argc, argv); }
187