benchmark/test
Matt Armstrong 69054ae50e
Use fewer ramp up repetitions when KeepRunningBatch is used (#1113)
Use the benchmark's reported iteration count when estimating
iterations for the next repetition, rather than the requested
iteration count.  When the benchmark uses KeepRunningBatch the actual
iteration count can be larger than the one the runner requested.

Prior to this fix the runner was underestimating the next iteration
count, sometimes significantly so.  Consider the case of a benchmark
using a batch size of 1024.  Prior to this change, the benchmark
runner would attempt iteration counts 1, 10, 100 and 1000, yet the
benchmark itself would do the same amount of work each time: a single
batch of 1024 iterations.  The discrepancy could also contribute to
estimation errors once the benchmark time reached 10% of the target.
For example, if the very first batch of 1024 iterations reached 10% of
benchmark_min_min time, the runner would attempt to scale that to 100%
from a basis of one iteration rather than 1024.

This bug was particularly noticeable in benchmarks with large batch
sizes, especially when the benchmark also had slow set up or tear down
phases.

With this fix in place it is possible to use KeepRunningBatch to
achieve a kind of "minimum iteration count" feature by using a larger
fixed batch size.  For example, a benchmark may build a map of 500K
elements and test a "find" operation.  There is no point in running
"find" just 1, 10, 100, etc., times.  The benchmark can now pick a
batch size of something like 10K, and the runner will arrive at the
final max iteration count with in noticeably fewer repetitions.
2021-04-20 07:16:05 +01:00
..
args_product_test.cc Add CartesianProduct with associated test (#1029) 2020-08-25 13:47:44 +01:00
AssemblyTests.cmake split_list is not defined for assembly tests (#595) 2018-05-14 15:02:49 +01:00
basic_test.cc Use fewer ramp up repetitions when KeepRunningBatch is used (#1113) 2021-04-20 07:16:05 +01:00
benchmark_gtest.cc Fix Range when starting at zero (#1073) 2020-11-26 11:12:45 +00:00
benchmark_name_gtest.cc BENCHMARK_CAPTURE() and Complexity() - naming problem (#761) 2019-03-17 16:38:51 +03:00
benchmark_test.cc Allow AddRange to work with int64_t. (#548) 2018-04-03 23:12:47 +01:00
BUILD Switch to Starlark for C++ rules. (#887) 2019-10-08 11:09:51 +01:00
clobber_memory_assembly_test.cc Add tests to verify assembler output -- Fix DoNotOptimize. (#530) 2018-03-23 16:10:47 -06:00
CMakeLists.txt Add CartesianProduct with associated test (#1029) 2020-08-25 13:47:44 +01:00
commandlineflags_gtest.cc Remove "BENCHMARK_" prefix from env var version of command line flags (#997) 2020-08-18 10:02:20 +01:00
complexity_test.cc Bugfix/wsl selftest fixes. Fixes #839 (#843) 2019-07-27 19:02:31 +03:00
cxx03_test.cc Iteration counts should be uint64_t globally. (#817) 2019-05-13 12:33:11 +03:00
diagnostics_test.cc Refactor most usages of KeepRunning to use the perfered ranged-for. (#459) 2017-10-17 12:17:02 -06:00
display_aggregates_only_test.cc Track two more details about runs - the aggregate name, and run name. (#675) 2018-09-13 15:08:15 +03:00
donotoptimize_assembly_test.cc Add tests to verify assembler output -- Fix DoNotOptimize. (#530) 2018-03-23 16:10:47 -06:00
donotoptimize_test.cc Fix uninitialized warning (#560) 2018-03-25 20:05:31 +01:00
filter_test.cc Refactor most usages of KeepRunning to use the perfered ranged-for. (#459) 2017-10-17 12:17:02 -06:00
fixture_test.cc Added support for macro expansion in benchmark names (#1054) 2020-11-19 13:50:30 +00:00
internal_threading_test.cc Add process_time for better OpenMP and user-managed thread timing 2019-04-09 13:01:33 +01:00
link_main_test.cc Add benchmark_main target. (#601) 2018-05-25 11:18:58 +01:00
map_test.cc Allow AddRange to work with int64_t. (#548) 2018-04-03 23:12:47 +01:00
memory_manager_test.cc [JSON] add threads and repetitions to the json output (#748) 2019-03-26 09:53:07 +00:00
multiple_ranges_test.cc Negative ranges #762 (#787) 2019-03-26 10:50:53 +00:00
options_test.cc Add 'seconds' time unit (#1076) 2020-12-21 20:15:58 +03:00
output_test_helper.cc Add 'seconds' time unit (#1076) 2020-12-21 20:15:58 +03:00
output_test.h *Display* aggregates only. (#665) 2018-09-12 16:26:17 +03:00
register_benchmark_test.cc Track two more details about runs - the aggregate name, and run name. (#675) 2018-09-13 15:08:15 +03:00
report_aggregates_only_test.cc Track two more details about runs - the aggregate name, and run name. (#675) 2018-09-13 15:08:15 +03:00
reporter_output_test.cc Implement custom benchmark name (#1107) 2021-03-30 16:43:03 +03:00
skip_with_error_test.cc Relax CHECK condition in benchmark_runner.cc (#938) 2020-02-21 17:53:25 +03:00
state_assembly_test.cc Iteration counts should be uint64_t globally. (#817) 2019-05-13 12:33:11 +03:00
statistics_gtest.cc Fix type conversion warnings. (#951) 2020-04-06 13:52:09 +01:00
string_util_gtest.cc Guard ASSERT_THROWS checks with BENCHMARK_HAS_NO_EXCEPTIONS (#874) 2019-09-20 10:25:31 +01:00
templated_fixture_test.cc (clang-)format all the things (#610) 2018-06-01 11:14:19 +01:00
user_counters_tabular_test.cc Bugfix/wsl selftest fixes. Fixes #839 (#843) 2019-07-27 19:02:31 +03:00
user_counters_test.cc Custom user counters: add invert modifier. (#850) 2019-08-12 17:47:46 +03:00
user_counters_thousands_test.cc [JSON] add threads and repetitions to the json output (#748) 2019-03-26 09:53:07 +00:00