1a8c51b3fSopenharmony_ci 2a8c51b3fSopenharmony_ci#undef NDEBUG 3a8c51b3fSopenharmony_ci 4a8c51b3fSopenharmony_ci#include "benchmark/benchmark.h" 5a8c51b3fSopenharmony_ci#include "output_test.h" 6a8c51b3fSopenharmony_ci 7a8c51b3fSopenharmony_ci// ========================================================================= // 8a8c51b3fSopenharmony_ci// ------------------------ Thousands Customisation ------------------------ // 9a8c51b3fSopenharmony_ci// ========================================================================= // 10a8c51b3fSopenharmony_ci 11a8c51b3fSopenharmony_civoid BM_Counters_Thousands(benchmark::State& state) { 12a8c51b3fSopenharmony_ci for (auto _ : state) { 13a8c51b3fSopenharmony_ci } 14a8c51b3fSopenharmony_ci namespace bm = benchmark; 15a8c51b3fSopenharmony_ci state.counters.insert({ 16a8c51b3fSopenharmony_ci {"t0_1000000DefaultBase", 17a8c51b3fSopenharmony_ci bm::Counter(1000 * 1000, bm::Counter::kDefaults)}, 18a8c51b3fSopenharmony_ci {"t1_1000000Base1000", bm::Counter(1000 * 1000, bm::Counter::kDefaults, 19a8c51b3fSopenharmony_ci bm::Counter::OneK::kIs1000)}, 20a8c51b3fSopenharmony_ci {"t2_1000000Base1024", bm::Counter(1000 * 1000, bm::Counter::kDefaults, 21a8c51b3fSopenharmony_ci bm::Counter::OneK::kIs1024)}, 22a8c51b3fSopenharmony_ci {"t3_1048576Base1000", bm::Counter(1024 * 1024, bm::Counter::kDefaults, 23a8c51b3fSopenharmony_ci bm::Counter::OneK::kIs1000)}, 24a8c51b3fSopenharmony_ci {"t4_1048576Base1024", bm::Counter(1024 * 1024, bm::Counter::kDefaults, 25a8c51b3fSopenharmony_ci bm::Counter::OneK::kIs1024)}, 26a8c51b3fSopenharmony_ci }); 27a8c51b3fSopenharmony_ci} 28a8c51b3fSopenharmony_ciBENCHMARK(BM_Counters_Thousands)->Repetitions(2); 29a8c51b3fSopenharmony_ciADD_CASES( 30a8c51b3fSopenharmony_ci TC_ConsoleOut, 31a8c51b3fSopenharmony_ci { 32a8c51b3fSopenharmony_ci {"^BM_Counters_Thousands/repeats:2 %console_report " 33a8c51b3fSopenharmony_ci "t0_1000000DefaultBase=1M " 34a8c51b3fSopenharmony_ci "t1_1000000Base1000=1M t2_1000000Base1024=976.56[23]Ki " 35a8c51b3fSopenharmony_ci "t3_1048576Base1000=1.04858M t4_1048576Base1024=1Mi$"}, 36a8c51b3fSopenharmony_ci {"^BM_Counters_Thousands/repeats:2 %console_report " 37a8c51b3fSopenharmony_ci "t0_1000000DefaultBase=1M " 38a8c51b3fSopenharmony_ci "t1_1000000Base1000=1M t2_1000000Base1024=976.56[23]Ki " 39a8c51b3fSopenharmony_ci "t3_1048576Base1000=1.04858M t4_1048576Base1024=1Mi$"}, 40a8c51b3fSopenharmony_ci {"^BM_Counters_Thousands/repeats:2_mean %console_report " 41a8c51b3fSopenharmony_ci "t0_1000000DefaultBase=1M t1_1000000Base1000=1M " 42a8c51b3fSopenharmony_ci "t2_1000000Base1024=976.56[23]Ki t3_1048576Base1000=1.04858M " 43a8c51b3fSopenharmony_ci "t4_1048576Base1024=1Mi$"}, 44a8c51b3fSopenharmony_ci {"^BM_Counters_Thousands/repeats:2_median %console_report " 45a8c51b3fSopenharmony_ci "t0_1000000DefaultBase=1M t1_1000000Base1000=1M " 46a8c51b3fSopenharmony_ci "t2_1000000Base1024=976.56[23]Ki t3_1048576Base1000=1.04858M " 47a8c51b3fSopenharmony_ci "t4_1048576Base1024=1Mi$"}, 48a8c51b3fSopenharmony_ci {"^BM_Counters_Thousands/repeats:2_stddev %console_time_only_report [ " 49a8c51b3fSopenharmony_ci "]*2 t0_1000000DefaultBase=0 t1_1000000Base1000=0 " 50a8c51b3fSopenharmony_ci "t2_1000000Base1024=0 t3_1048576Base1000=0 t4_1048576Base1024=0$"}, 51a8c51b3fSopenharmony_ci }); 52a8c51b3fSopenharmony_ciADD_CASES(TC_JSONOut, 53a8c51b3fSopenharmony_ci {{"\"name\": \"BM_Counters_Thousands/repeats:2\",$"}, 54a8c51b3fSopenharmony_ci {"\"family_index\": 0,$", MR_Next}, 55a8c51b3fSopenharmony_ci {"\"per_family_instance_index\": 0,$", MR_Next}, 56a8c51b3fSopenharmony_ci {"\"run_name\": \"BM_Counters_Thousands/repeats:2\",$", MR_Next}, 57a8c51b3fSopenharmony_ci {"\"run_type\": \"iteration\",$", MR_Next}, 58a8c51b3fSopenharmony_ci {"\"repetitions\": 2,$", MR_Next}, 59a8c51b3fSopenharmony_ci {"\"repetition_index\": 0,$", MR_Next}, 60a8c51b3fSopenharmony_ci {"\"threads\": 1,$", MR_Next}, 61a8c51b3fSopenharmony_ci {"\"iterations\": %int,$", MR_Next}, 62a8c51b3fSopenharmony_ci {"\"real_time\": %float,$", MR_Next}, 63a8c51b3fSopenharmony_ci {"\"cpu_time\": %float,$", MR_Next}, 64a8c51b3fSopenharmony_ci {"\"time_unit\": \"ns\",$", MR_Next}, 65a8c51b3fSopenharmony_ci {"\"t0_1000000DefaultBase\": 1\\.(0)*e\\+(0)*6,$", MR_Next}, 66a8c51b3fSopenharmony_ci {"\"t1_1000000Base1000\": 1\\.(0)*e\\+(0)*6,$", MR_Next}, 67a8c51b3fSopenharmony_ci {"\"t2_1000000Base1024\": 1\\.(0)*e\\+(0)*6,$", MR_Next}, 68a8c51b3fSopenharmony_ci {"\"t3_1048576Base1000\": 1\\.048576(0)*e\\+(0)*6,$", MR_Next}, 69a8c51b3fSopenharmony_ci {"\"t4_1048576Base1024\": 1\\.048576(0)*e\\+(0)*6$", MR_Next}, 70a8c51b3fSopenharmony_ci {"}", MR_Next}}); 71a8c51b3fSopenharmony_ciADD_CASES(TC_JSONOut, 72a8c51b3fSopenharmony_ci {{"\"name\": \"BM_Counters_Thousands/repeats:2\",$"}, 73a8c51b3fSopenharmony_ci {"\"family_index\": 0,$", MR_Next}, 74a8c51b3fSopenharmony_ci {"\"per_family_instance_index\": 0,$", MR_Next}, 75a8c51b3fSopenharmony_ci {"\"run_name\": \"BM_Counters_Thousands/repeats:2\",$", MR_Next}, 76a8c51b3fSopenharmony_ci {"\"run_type\": \"iteration\",$", MR_Next}, 77a8c51b3fSopenharmony_ci {"\"repetitions\": 2,$", MR_Next}, 78a8c51b3fSopenharmony_ci {"\"repetition_index\": 1,$", MR_Next}, 79a8c51b3fSopenharmony_ci {"\"threads\": 1,$", MR_Next}, 80a8c51b3fSopenharmony_ci {"\"iterations\": %int,$", MR_Next}, 81a8c51b3fSopenharmony_ci {"\"real_time\": %float,$", MR_Next}, 82a8c51b3fSopenharmony_ci {"\"cpu_time\": %float,$", MR_Next}, 83a8c51b3fSopenharmony_ci {"\"time_unit\": \"ns\",$", MR_Next}, 84a8c51b3fSopenharmony_ci {"\"t0_1000000DefaultBase\": 1\\.(0)*e\\+(0)*6,$", MR_Next}, 85a8c51b3fSopenharmony_ci {"\"t1_1000000Base1000\": 1\\.(0)*e\\+(0)*6,$", MR_Next}, 86a8c51b3fSopenharmony_ci {"\"t2_1000000Base1024\": 1\\.(0)*e\\+(0)*6,$", MR_Next}, 87a8c51b3fSopenharmony_ci {"\"t3_1048576Base1000\": 1\\.048576(0)*e\\+(0)*6,$", MR_Next}, 88a8c51b3fSopenharmony_ci {"\"t4_1048576Base1024\": 1\\.048576(0)*e\\+(0)*6$", MR_Next}, 89a8c51b3fSopenharmony_ci {"}", MR_Next}}); 90a8c51b3fSopenharmony_ciADD_CASES(TC_JSONOut, 91a8c51b3fSopenharmony_ci {{"\"name\": \"BM_Counters_Thousands/repeats:2_mean\",$"}, 92a8c51b3fSopenharmony_ci {"\"family_index\": 0,$", MR_Next}, 93a8c51b3fSopenharmony_ci {"\"per_family_instance_index\": 0,$", MR_Next}, 94a8c51b3fSopenharmony_ci {"\"run_name\": \"BM_Counters_Thousands/repeats:2\",$", MR_Next}, 95a8c51b3fSopenharmony_ci {"\"run_type\": \"aggregate\",$", MR_Next}, 96a8c51b3fSopenharmony_ci {"\"repetitions\": 2,$", MR_Next}, 97a8c51b3fSopenharmony_ci {"\"threads\": 1,$", MR_Next}, 98a8c51b3fSopenharmony_ci {"\"aggregate_name\": \"mean\",$", MR_Next}, 99a8c51b3fSopenharmony_ci {"\"aggregate_unit\": \"time\",$", MR_Next}, 100a8c51b3fSopenharmony_ci {"\"iterations\": 2,$", MR_Next}, 101a8c51b3fSopenharmony_ci {"\"real_time\": %float,$", MR_Next}, 102a8c51b3fSopenharmony_ci {"\"cpu_time\": %float,$", MR_Next}, 103a8c51b3fSopenharmony_ci {"\"time_unit\": \"ns\",$", MR_Next}, 104a8c51b3fSopenharmony_ci {"\"t0_1000000DefaultBase\": 1\\.(0)*e\\+(0)*6,$", MR_Next}, 105a8c51b3fSopenharmony_ci {"\"t1_1000000Base1000\": 1\\.(0)*e\\+(0)*6,$", MR_Next}, 106a8c51b3fSopenharmony_ci {"\"t2_1000000Base1024\": 1\\.(0)*e\\+(0)*6,$", MR_Next}, 107a8c51b3fSopenharmony_ci {"\"t3_1048576Base1000\": 1\\.048576(0)*e\\+(0)*6,$", MR_Next}, 108a8c51b3fSopenharmony_ci {"\"t4_1048576Base1024\": 1\\.048576(0)*e\\+(0)*6$", MR_Next}, 109a8c51b3fSopenharmony_ci {"}", MR_Next}}); 110a8c51b3fSopenharmony_ciADD_CASES(TC_JSONOut, 111a8c51b3fSopenharmony_ci {{"\"name\": \"BM_Counters_Thousands/repeats:2_median\",$"}, 112a8c51b3fSopenharmony_ci {"\"family_index\": 0,$", MR_Next}, 113a8c51b3fSopenharmony_ci {"\"per_family_instance_index\": 0,$", MR_Next}, 114a8c51b3fSopenharmony_ci {"\"run_name\": \"BM_Counters_Thousands/repeats:2\",$", MR_Next}, 115a8c51b3fSopenharmony_ci {"\"run_type\": \"aggregate\",$", MR_Next}, 116a8c51b3fSopenharmony_ci {"\"repetitions\": 2,$", MR_Next}, 117a8c51b3fSopenharmony_ci {"\"threads\": 1,$", MR_Next}, 118a8c51b3fSopenharmony_ci {"\"aggregate_name\": \"median\",$", MR_Next}, 119a8c51b3fSopenharmony_ci {"\"aggregate_unit\": \"time\",$", MR_Next}, 120a8c51b3fSopenharmony_ci {"\"iterations\": 2,$", MR_Next}, 121a8c51b3fSopenharmony_ci {"\"real_time\": %float,$", MR_Next}, 122a8c51b3fSopenharmony_ci {"\"cpu_time\": %float,$", MR_Next}, 123a8c51b3fSopenharmony_ci {"\"time_unit\": \"ns\",$", MR_Next}, 124a8c51b3fSopenharmony_ci {"\"t0_1000000DefaultBase\": 1\\.(0)*e\\+(0)*6,$", MR_Next}, 125a8c51b3fSopenharmony_ci {"\"t1_1000000Base1000\": 1\\.(0)*e\\+(0)*6,$", MR_Next}, 126a8c51b3fSopenharmony_ci {"\"t2_1000000Base1024\": 1\\.(0)*e\\+(0)*6,$", MR_Next}, 127a8c51b3fSopenharmony_ci {"\"t3_1048576Base1000\": 1\\.048576(0)*e\\+(0)*6,$", MR_Next}, 128a8c51b3fSopenharmony_ci {"\"t4_1048576Base1024\": 1\\.048576(0)*e\\+(0)*6$", MR_Next}, 129a8c51b3fSopenharmony_ci {"}", MR_Next}}); 130a8c51b3fSopenharmony_ciADD_CASES(TC_JSONOut, 131a8c51b3fSopenharmony_ci {{"\"name\": \"BM_Counters_Thousands/repeats:2_stddev\",$"}, 132a8c51b3fSopenharmony_ci {"\"family_index\": 0,$", MR_Next}, 133a8c51b3fSopenharmony_ci {"\"per_family_instance_index\": 0,$", MR_Next}, 134a8c51b3fSopenharmony_ci {"\"run_name\": \"BM_Counters_Thousands/repeats:2\",$", MR_Next}, 135a8c51b3fSopenharmony_ci {"\"run_type\": \"aggregate\",$", MR_Next}, 136a8c51b3fSopenharmony_ci {"\"repetitions\": 2,$", MR_Next}, 137a8c51b3fSopenharmony_ci {"\"threads\": 1,$", MR_Next}, 138a8c51b3fSopenharmony_ci {"\"aggregate_name\": \"stddev\",$", MR_Next}, 139a8c51b3fSopenharmony_ci {"\"aggregate_unit\": \"time\",$", MR_Next}, 140a8c51b3fSopenharmony_ci {"\"iterations\": 2,$", MR_Next}, 141a8c51b3fSopenharmony_ci {"\"real_time\": %float,$", MR_Next}, 142a8c51b3fSopenharmony_ci {"\"cpu_time\": %float,$", MR_Next}, 143a8c51b3fSopenharmony_ci {"\"time_unit\": \"ns\",$", MR_Next}, 144a8c51b3fSopenharmony_ci {"\"t0_1000000DefaultBase\": 0\\.(0)*e\\+(0)*,$", MR_Next}, 145a8c51b3fSopenharmony_ci {"\"t1_1000000Base1000\": 0\\.(0)*e\\+(0)*,$", MR_Next}, 146a8c51b3fSopenharmony_ci {"\"t2_1000000Base1024\": 0\\.(0)*e\\+(0)*,$", MR_Next}, 147a8c51b3fSopenharmony_ci {"\"t3_1048576Base1000\": 0\\.(0)*e\\+(0)*,$", MR_Next}, 148a8c51b3fSopenharmony_ci {"\"t4_1048576Base1024\": 0\\.(0)*e\\+(0)*$", MR_Next}, 149a8c51b3fSopenharmony_ci {"}", MR_Next}}); 150a8c51b3fSopenharmony_ci 151a8c51b3fSopenharmony_ciADD_CASES( 152a8c51b3fSopenharmony_ci TC_CSVOut, 153a8c51b3fSopenharmony_ci {{"^\"BM_Counters_Thousands/" 154a8c51b3fSopenharmony_ci "repeats:2\",%csv_report,1e\\+(0)*6,1e\\+(0)*6,1e\\+(0)*6,1\\.04858e\\+(" 155a8c51b3fSopenharmony_ci "0)*6,1\\.04858e\\+(0)*6$"}, 156a8c51b3fSopenharmony_ci {"^\"BM_Counters_Thousands/" 157a8c51b3fSopenharmony_ci "repeats:2\",%csv_report,1e\\+(0)*6,1e\\+(0)*6,1e\\+(0)*6,1\\.04858e\\+(" 158a8c51b3fSopenharmony_ci "0)*6,1\\.04858e\\+(0)*6$"}, 159a8c51b3fSopenharmony_ci {"^\"BM_Counters_Thousands/" 160a8c51b3fSopenharmony_ci "repeats:2_mean\",%csv_report,1e\\+(0)*6,1e\\+(0)*6,1e\\+(0)*6,1\\." 161a8c51b3fSopenharmony_ci "04858e\\+(0)*6,1\\.04858e\\+(0)*6$"}, 162a8c51b3fSopenharmony_ci {"^\"BM_Counters_Thousands/" 163a8c51b3fSopenharmony_ci "repeats:2_median\",%csv_report,1e\\+(0)*6,1e\\+(0)*6,1e\\+(0)*6,1\\." 164a8c51b3fSopenharmony_ci "04858e\\+(0)*6,1\\.04858e\\+(0)*6$"}, 165a8c51b3fSopenharmony_ci {"^\"BM_Counters_Thousands/repeats:2_stddev\",%csv_report,0,0,0,0,0$"}}); 166a8c51b3fSopenharmony_ci// VS2013 does not allow this function to be passed as a lambda argument 167a8c51b3fSopenharmony_ci// to CHECK_BENCHMARK_RESULTS() 168a8c51b3fSopenharmony_civoid CheckThousands(Results const& e) { 169a8c51b3fSopenharmony_ci if (e.name != "BM_Counters_Thousands/repeats:2") 170a8c51b3fSopenharmony_ci return; // Do not check the aggregates! 171a8c51b3fSopenharmony_ci 172a8c51b3fSopenharmony_ci // check that the values are within 0.01% of the expected values 173a8c51b3fSopenharmony_ci CHECK_FLOAT_COUNTER_VALUE(e, "t0_1000000DefaultBase", EQ, 1000 * 1000, 174a8c51b3fSopenharmony_ci 0.0001); 175a8c51b3fSopenharmony_ci CHECK_FLOAT_COUNTER_VALUE(e, "t1_1000000Base1000", EQ, 1000 * 1000, 0.0001); 176a8c51b3fSopenharmony_ci CHECK_FLOAT_COUNTER_VALUE(e, "t2_1000000Base1024", EQ, 1000 * 1000, 0.0001); 177a8c51b3fSopenharmony_ci CHECK_FLOAT_COUNTER_VALUE(e, "t3_1048576Base1000", EQ, 1024 * 1024, 0.0001); 178a8c51b3fSopenharmony_ci CHECK_FLOAT_COUNTER_VALUE(e, "t4_1048576Base1024", EQ, 1024 * 1024, 0.0001); 179a8c51b3fSopenharmony_ci} 180a8c51b3fSopenharmony_ciCHECK_BENCHMARK_RESULTS("BM_Counters_Thousands", &CheckThousands); 181a8c51b3fSopenharmony_ci 182a8c51b3fSopenharmony_ci// ========================================================================= // 183a8c51b3fSopenharmony_ci// --------------------------- TEST CASES END ------------------------------ // 184a8c51b3fSopenharmony_ci// ========================================================================= // 185a8c51b3fSopenharmony_ci 186a8c51b3fSopenharmony_ciint main(int argc, char* argv[]) { RunOutputTests(argc, argv); } 187