1 #ifndef BENCHMARK_API_INTERNAL_H 2 #define BENCHMARK_API_INTERNAL_H 3 4 #include <cmath> 5 #include <iosfwd> 6 #include <limits> 7 #include <memory> 8 #include <string> 9 #include <vector> 10 11 #include "benchmark/benchmark.h" 12 #include "commandlineflags.h" 13 14 namespace benchmark { 15 namespace internal { 16 17 // Information kept per benchmark we may want to run 18 class BenchmarkInstance { 19 public: 20 BenchmarkInstance(Benchmark* benchmark, int family_index, 21 int per_family_instance_index, 22 const std::vector<int64_t>& args, int threads); 23 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_; 29 } 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_; } 41 42 State Run(IterationCount iters, int thread_id, internal::ThreadTimer* timer, 43 internal::ThreadManager* manager, 44 internal::PerfCountersMeasurement* perf_counters_measurement) const; 45 46 private: 47 BenchmarkName name_; 48 Benchmark& benchmark_; 49 const int family_index_; 50 const int per_family_instance_index_; 51 AggregationReportMode aggregation_report_mode_; 52 const std::vector<int64_t>& args_; 53 TimeUnit time_unit_; 54 bool measure_process_cpu_time_; 55 bool use_real_time_; 56 bool use_manual_time_; 57 BigO complexity_; 58 BigOFunc* complexity_lambda_; 59 UserCounters counters_; 60 const std::vector<Statistics>& statistics_; 61 int repetitions_; 62 double min_time_; 63 IterationCount iterations_; 64 int threads_; // Number of concurrent threads to us 65 }; 66 67 bool FindBenchmarksInternal(const std::string& re, 68 std::vector<BenchmarkInstance>* benchmarks, 69 std::ostream* Err); 70 71 bool IsZero(double n); 72 73 ConsoleReporter::OutputOptions GetOutputOptions(bool force_no_color = false); 74 75 } // end namespace internal 76 } // end namespace benchmark 77 78 #endif // BENCHMARK_API_INTERNAL_H 79