1 #ifndef BENCHMARK_API_INTERNAL_H
2 #define BENCHMARK_API_INTERNAL_H
11 #include "benchmark/benchmark.h"
12 #include "commandlineflags.h"
17 // Information kept per benchmark we may want to run
18 class BenchmarkInstance
{
20 BenchmarkInstance(Benchmark
* benchmark
, int family_index
,
21 int per_family_instance_index
,
22 const std::vector
<int64_t>& args
, int threads
);
24 const BenchmarkName
& name() const { return name_
; }
25 int family_index() const { return family_index_
; }
26 int per_family_instance_index() const { return per_family_instance_index_
; }
27 AggregationReportMode
aggregation_report_mode() const {
28 return aggregation_report_mode_
;
30 TimeUnit
time_unit() const { return time_unit_
; }
31 bool measure_process_cpu_time() const { return measure_process_cpu_time_
; }
32 bool use_real_time() const { return use_real_time_
; }
33 bool use_manual_time() const { return use_manual_time_
; }
34 BigO
complexity() const { return complexity_
; }
35 BigOFunc
* complexity_lambda() const { return complexity_lambda_
; }
36 const std::vector
<Statistics
>& statistics() const { return statistics_
; }
37 int repetitions() const { return repetitions_
; }
38 double min_time() const { return min_time_
; }
39 IterationCount
iterations() const { return iterations_
; }
40 int threads() const { return threads_
; }
42 void Teardown() const;
44 State
Run(IterationCount iters
, int thread_id
, internal::ThreadTimer
* timer
,
45 internal::ThreadManager
* manager
,
46 internal::PerfCountersMeasurement
* perf_counters_measurement
) const;
50 Benchmark
& benchmark_
;
51 const int family_index_
;
52 const int per_family_instance_index_
;
53 AggregationReportMode aggregation_report_mode_
;
54 const std::vector
<int64_t>& args_
;
56 bool measure_process_cpu_time_
;
58 bool use_manual_time_
;
60 BigOFunc
* complexity_lambda_
;
61 UserCounters counters_
;
62 const std::vector
<Statistics
>& statistics_
;
65 IterationCount iterations_
;
66 int threads_
; // Number of concurrent threads to us
68 typedef void (*callback_function
)(const benchmark::State
&);
69 callback_function setup_
= nullptr;
70 callback_function teardown_
= nullptr;
73 bool FindBenchmarksInternal(const std::string
& re
,
74 std::vector
<BenchmarkInstance
>* benchmarks
,
77 bool IsZero(double n
);
79 ConsoleReporter::OutputOptions
GetOutputOptions(bool force_no_color
= false);
81 } // end namespace internal
82 } // end namespace benchmark
84 #endif // BENCHMARK_API_INTERNAL_H