15#ifndef BENCHMARK_RUNNER_H_
16#define BENCHMARK_RUNNER_H_
21#include "benchmark_api_internal.h"
22#include "internal_macros.h"
23#include "perf_counters.h"
24#include "thread_manager.h"
28BM_DECLARE_string(benchmark_min_time);
29BM_DECLARE_double(benchmark_min_warmup_time);
30BM_DECLARE_int32(benchmark_repetitions);
31BM_DECLARE_bool(benchmark_report_aggregates_only);
32BM_DECLARE_bool(benchmark_display_aggregates_only);
33BM_DECLARE_string(benchmark_perf_counters);
37extern MemoryManager* memory_manager;
40 std::vector<BenchmarkReporter::Run> non_aggregates;
41 std::vector<BenchmarkReporter::Run> aggregates_only;
43 bool display_report_aggregates_only =
false;
44 bool file_report_aggregates_only =
false;
48 enum { ITERS, TIME } tag;
64 int GetNumRepeats()
const {
return repeats; }
66 bool HasRepeatsRemaining()
const {
67 return GetNumRepeats() != num_repetitions_done;
70 void DoOneRepetition();
75 return reports_for_family;
78 double GetMinTime()
const {
return min_time; }
80 bool HasExplicitIters()
const {
return has_explicit_iteration_count; }
82 IterationCount GetIters()
const {
return iters; }
91 const double min_time;
92 const double min_warmup_time;
95 const bool has_explicit_iteration_count;
97 int num_repetitions_done = 0;
99 std::vector<std::thread> pool;
101 std::vector<MemoryManager::Result> memory_results;
103 IterationCount iters;
109 struct IterationResults {
111 IterationCount iters;
114 IterationResults DoNIterations();
116 IterationCount PredictNumItersNeeded(
const IterationResults& i)
const;
118 bool ShouldReportIterationResults(
const IterationResults& i)
const;
120 double GetMinTimeToApply()
const;
122 void FinishWarmUp(
const IterationCount& i);
Definition benchmark_api_internal.h:18
Definition benchmark_runner.h:58
Definition perf_counters.h:149
Definition benchmark.h:1812
Definition benchmark_runner.h:47
Definition benchmark_runner.h:39
Definition thread_manager.h:39