brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.9 KiB · 94f5165 Raw
88 lines · c
1#ifndef BENCHMARK_API_INTERNAL_H2#define BENCHMARK_API_INTERNAL_H3 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 14namespace benchmark {15namespace internal {16 17// Information kept per benchmark we may want to run18class 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  double min_warmup_time() const { return min_warmup_time_; }40  IterationCount iterations() const { return iterations_; }41  int threads() const { return threads_; }42  void Setup() const;43  void Teardown() const;44 45  State Run(IterationCount iters, int thread_id, internal::ThreadTimer* timer,46            internal::ThreadManager* manager,47            internal::PerfCountersMeasurement* perf_counters_measurement) const;48 49 private:50  BenchmarkName name_;51  Benchmark& benchmark_;52  const int family_index_;53  const int per_family_instance_index_;54  AggregationReportMode aggregation_report_mode_;55  const std::vector<int64_t>& args_;56  TimeUnit time_unit_;57  bool measure_process_cpu_time_;58  bool use_real_time_;59  bool use_manual_time_;60  BigO complexity_;61  BigOFunc* complexity_lambda_;62  UserCounters counters_;63  const std::vector<Statistics>& statistics_;64  int repetitions_;65  double min_time_;66  double min_warmup_time_;67  IterationCount iterations_;68  int threads_;  // Number of concurrent threads to us69 70  typedef void (*callback_function)(const benchmark::State&);71  callback_function setup_ = nullptr;72  callback_function teardown_ = nullptr;73};74 75bool FindBenchmarksInternal(const std::string& re,76                            std::vector<BenchmarkInstance>* benchmarks,77                            std::ostream* Err);78 79bool IsZero(double n);80 81BENCHMARK_EXPORT82ConsoleReporter::OutputOptions GetOutputOptions(bool force_no_color = false);83 84}  // end namespace internal85}  // end namespace benchmark86 87#endif  // BENCHMARK_API_INTERNAL_H88