From 3a279ad212b14467bb416b1153ba8794e1a4a256 Mon Sep 17 00:00:00 2001 From: "Stanley C." <19547104+stanbot8@users.noreply.github.com> Date: Tue, 6 Oct 2026 12:24:49 +0000 Subject: [PATCH] Apply UseManualTime to BM_bytes_per_second and BM_items_per_second --- test/reporter_output_test.cc | 102 ++++++++++++++++++++--------------- 1 file changed, 58 insertions(+), 44 deletions(-) diff --git a/test/reporter_output_test.cc b/test/reporter_output_test.cc index 26d87de012..2ad2e371bd 100644 --- a/test/reporter_output_test.cc +++ b/test/reporter_output_test.cc @@ -97,34 +97,42 @@ ADD_CASES(TC_CSVOut, {{"^\"BM_basic\",%csv_report$"}}); // ------------------------ Testing Bytes per Second Output ---------------- // // ========================================================================= // +constexpr double kIterationTime = 150e-9; + void BM_bytes_per_second(benchmark::State& state) { for (auto _ : state) { - // This test requires a non-zero CPU time to avoid divide-by-zero - auto iterations = static_cast(state.iterations()) * - static_cast(state.iterations()); - benchmark::DoNotOptimize(iterations); + state.SetIterationTime(kIterationTime); } state.SetBytesProcessed(1); } -BENCHMARK(BM_bytes_per_second); +BENCHMARK(BM_bytes_per_second)->UseManualTime(); -ADD_CASES(TC_ConsoleOut, {{"^BM_bytes_per_second %console_report " +ADD_CASES(TC_ConsoleOut, {{"^BM_bytes_per_second/manual_time %console_report " "bytes_per_second=%float[kM]{0,1}/s$"}}); -ADD_CASES(TC_JSONOut, {{"\"name\": \"BM_bytes_per_second\",$"}, - {"\"family_index\": 1,$", MR_Next}, - {"\"per_family_instance_index\": 0,$", MR_Next}, - {"\"run_name\": \"BM_bytes_per_second\",$", MR_Next}, - {"\"run_type\": \"iteration\",$", MR_Next}, - {"\"repetitions\": 1,$", MR_Next}, - {"\"repetition_index\": 0,$", MR_Next}, - {"\"threads\": 1,$", MR_Next}, - {"\"iterations\": %int,$", MR_Next}, - {"\"real_time\": %float,$", MR_Next}, - {"\"cpu_time\": %float,$", MR_Next}, - {"\"time_unit\": \"ns\",$", MR_Next}, - {"\"bytes_per_second\": %float$", MR_Next}, - {"}", MR_Next}}); -ADD_CASES(TC_CSVOut, {{"^\"BM_bytes_per_second\",%csv_bytes_report$"}}); +ADD_CASES(TC_JSONOut, + {{"\"name\": \"BM_bytes_per_second/manual_time\",$"}, + {"\"family_index\": 1,$", MR_Next}, + {"\"per_family_instance_index\": 0,$", MR_Next}, + {"\"run_name\": \"BM_bytes_per_second/manual_time\",$", MR_Next}, + {"\"run_type\": \"iteration\",$", MR_Next}, + {"\"repetitions\": 1,$", MR_Next}, + {"\"repetition_index\": 0,$", MR_Next}, + {"\"threads\": 1,$", MR_Next}, + {"\"iterations\": %int,$", MR_Next}, + {"\"real_time\": %float,$", MR_Next}, + {"\"cpu_time\": %float,$", MR_Next}, + {"\"time_unit\": \"ns\",$", MR_Next}, + {"\"bytes_per_second\": %float$", MR_Next}, + {"}", MR_Next}}); +ADD_CASES(TC_CSVOut, + {{"^\"BM_bytes_per_second/manual_time\",%csv_bytes_report$"}}); + +void BM_bytes_per_second_results(Results const& e) { + CHECK_FLOAT_RESULT_VALUE(e, "bytes_per_second", EQ, + 1.0 / (e.NumIterations() * kIterationTime), 0.001); +} +CHECK_BENCHMARK_RESULTS("BM_bytes_per_second/manual_time", + &BM_bytes_per_second_results); // ========================================================================= // // ------------------------ Testing Items per Second Output ---------------- // @@ -132,32 +140,38 @@ ADD_CASES(TC_CSVOut, {{"^\"BM_bytes_per_second\",%csv_bytes_report$"}}); void BM_items_per_second(benchmark::State& state) { for (auto _ : state) { - // This test requires a non-zero CPU time to avoid divide-by-zero - auto iterations = static_cast(state.iterations()) * - static_cast(state.iterations()); - benchmark::DoNotOptimize(iterations); + state.SetIterationTime(kIterationTime); } state.SetItemsProcessed(1); } -BENCHMARK(BM_items_per_second); +BENCHMARK(BM_items_per_second)->UseManualTime(); -ADD_CASES(TC_ConsoleOut, {{"^BM_items_per_second %console_report " +ADD_CASES(TC_ConsoleOut, {{"^BM_items_per_second/manual_time %console_report " "items_per_second=%float[kM]{0,1}/s$"}}); -ADD_CASES(TC_JSONOut, {{"\"name\": \"BM_items_per_second\",$"}, - {"\"family_index\": 2,$", MR_Next}, - {"\"per_family_instance_index\": 0,$", MR_Next}, - {"\"run_name\": \"BM_items_per_second\",$", MR_Next}, - {"\"run_type\": \"iteration\",$", MR_Next}, - {"\"repetitions\": 1,$", MR_Next}, - {"\"repetition_index\": 0,$", MR_Next}, - {"\"threads\": 1,$", MR_Next}, - {"\"iterations\": %int,$", MR_Next}, - {"\"real_time\": %float,$", MR_Next}, - {"\"cpu_time\": %float,$", MR_Next}, - {"\"time_unit\": \"ns\",$", MR_Next}, - {"\"items_per_second\": %float$", MR_Next}, - {"}", MR_Next}}); -ADD_CASES(TC_CSVOut, {{"^\"BM_items_per_second\",%csv_items_report$"}}); +ADD_CASES(TC_JSONOut, + {{"\"name\": \"BM_items_per_second/manual_time\",$"}, + {"\"family_index\": 2,$", MR_Next}, + {"\"per_family_instance_index\": 0,$", MR_Next}, + {"\"run_name\": \"BM_items_per_second/manual_time\",$", MR_Next}, + {"\"run_type\": \"iteration\",$", MR_Next}, + {"\"repetitions\": 1,$", MR_Next}, + {"\"repetition_index\": 0,$", MR_Next}, + {"\"threads\": 1,$", MR_Next}, + {"\"iterations\": %int,$", MR_Next}, + {"\"real_time\": %float,$", MR_Next}, + {"\"cpu_time\": %float,$", MR_Next}, + {"\"time_unit\": \"ns\",$", MR_Next}, + {"\"items_per_second\": %float$", MR_Next}, + {"}", MR_Next}}); +ADD_CASES(TC_CSVOut, + {{"^\"BM_items_per_second/manual_time\",%csv_items_report$"}}); + +void BM_items_per_second_results(Results const& e) { + CHECK_FLOAT_RESULT_VALUE(e, "items_per_second", EQ, + 1.0 / (e.NumIterations() * kIterationTime), 0.001); +} +CHECK_BENCHMARK_RESULTS("BM_items_per_second/manual_time", + &BM_items_per_second_results); // ========================================================================= // // ------------------------ Testing Label Output --------------------------- // @@ -830,7 +844,7 @@ const auto UserStatistics = [](const std::vector& v) { }; void BM_UserStats(benchmark::State& state) { for (auto _ : state) { - state.SetIterationTime(150 / 10e8); + state.SetIterationTime(kIterationTime); } } // clang-format off @@ -961,7 +975,7 @@ const auto UserPercentStatistics = [](const std::vector&) { }; void BM_UserPercentStats(benchmark::State& state) { for (auto _ : state) { - state.SetIterationTime(150 / 10e8); + state.SetIterationTime(kIterationTime); } } // clang-format off