52class BenchmarkRunner {
58 int GetNumRepeats()
const {
return repeats; }
60 bool HasRepeatsRemaining()
const {
61 return GetNumRepeats() != num_repetitions_done;
64 void DoOneRepetition();
69 return reports_for_family;
72 double GetMinTime()
const {
return min_time; }
74 bool HasExplicitIters()
const {
return has_explicit_iteration_count; }
76 IterationCount GetIters()
const {
return iters; }
85 const double min_time;
86 const double min_warmup_time;
89 const bool has_explicit_iteration_count;
91 int num_repetitions_done = 0;
93 std::unique_ptr<ThreadRunnerBase> thread_runner;
101 struct IterationResults {
103 IterationCount iters;
106 IterationResults DoNIterations();
110 void RunProfilerManager(IterationCount profile_iterations);
112 IterationCount PredictNumItersNeeded(
const IterationResults& i)
const;
114 bool ShouldReportIterationResults(
const IterationResults& i)
const;
116 double GetMinTimeToApply()
const;
118 void FinishWarmUp(
const IterationCount& i);