benchmark_api_internal.cc
Go to the documentation of this file.
2 
3 #include <cinttypes>
4 
5 #include "string_util.h"
6 
7 namespace benchmark {
8 namespace internal {
9 
11  int per_family_instance_idx,
12  const std::vector<int64_t>& args,
13  int thread_count)
14  : benchmark_(*benchmark),
15  family_index_(family_idx),
16  per_family_instance_index_(per_family_instance_idx),
17  aggregation_report_mode_(benchmark_.aggregation_report_mode_),
18  args_(args),
19  time_unit_(benchmark_.time_unit_),
20  measure_process_cpu_time_(benchmark_.measure_process_cpu_time_),
21  use_real_time_(benchmark_.use_real_time_),
22  use_manual_time_(benchmark_.use_manual_time_),
23  complexity_(benchmark_.complexity_),
24  complexity_lambda_(benchmark_.complexity_lambda_),
25  statistics_(benchmark_.statistics_),
26  repetitions_(benchmark_.repetitions_),
27  min_time_(benchmark_.min_time_),
28  iterations_(benchmark_.iterations_),
29  threads_(thread_count) {
31 
32  size_t arg_i = 0;
33  for (const auto& arg : args) {
34  if (!name_.args.empty()) {
35  name_.args += '/';
36  }
37 
38  if (arg_i < benchmark->arg_names_.size()) {
39  const auto& arg_name = benchmark_.arg_names_[arg_i];
40  if (!arg_name.empty()) {
41  name_.args += StrFormat("%s:", arg_name.c_str());
42  }
43  }
44 
45  name_.args += StrFormat("%" PRId64, arg);
46  ++arg_i;
47  }
48 
49  if (!IsZero(benchmark->min_time_)) {
50  name_.min_time = StrFormat("min_time:%0.3f", benchmark_.min_time_);
51  }
52 
53  if (benchmark_.iterations_ != 0) {
55  "iterations:%lu", static_cast<unsigned long>(benchmark_.iterations_));
56  }
57 
58  if (benchmark_.repetitions_ != 0) {
60  }
61 
63  name_.time_type = "process_time";
64  }
65 
67  if (!name_.time_type.empty()) {
68  name_.time_type += '/';
69  }
70  name_.time_type += "manual_time";
71  } else if (benchmark_.use_real_time_) {
72  if (!name_.time_type.empty()) {
73  name_.time_type += '/';
74  }
75  name_.time_type += "real_time";
76  }
77 
78  if (!benchmark_.thread_counts_.empty()) {
79  name_.threads = StrFormat("threads:%d", threads_);
80  }
81 }
82 
85  internal::ThreadManager* manager,
86  internal::PerfCountersMeasurement* perf_counters_measurement) const {
87  State st(iters, args_, thread_id, threads_, timer, manager,
88  perf_counters_measurement);
89  benchmark_.Run(st);
90  return st;
91 }
92 
93 } // namespace internal
94 } // namespace benchmark
benchmark::BenchmarkName::repetitions
std::string repetitions
Definition: benchmark/include/benchmark/benchmark.h:1398
threads_
std::vector< grpc_core::Thread > threads_
Definition: event_engine/iomgr_engine/timer_manager.cc:52
benchmark::BenchmarkName::threads
std::string threads
Definition: benchmark/include/benchmark/benchmark.h:1400
benchmark
Definition: bm_alarm.cc:55
benchmark::internal::PerfCountersMeasurement
Definition: perf_counters.h:125
benchmark::internal::IsZero
bool IsZero(double n)
Definition: benchmark/src/benchmark.cc:407
benchmark::internal::ThreadTimer
Definition: thread_timer.h:10
benchmark::internal::Benchmark::use_real_time_
bool use_real_time_
Definition: benchmark/include/benchmark/benchmark.h:1028
benchmark::internal::BenchmarkInstance::args_
const std::vector< int64_t > & args_
Definition: benchmark/src/benchmark_api_internal.h:52
args_
grpc_channel_args * args_
Definition: grpclb.cc:513
benchmark_api_internal.h
benchmark::internal::Benchmark::name_
std::string name_
Definition: benchmark/include/benchmark/benchmark.h:1018
benchmark::internal::BenchmarkInstance::threads_
int threads_
Definition: benchmark/src/benchmark_api_internal.h:64
asyncio_get_stats.args
args
Definition: asyncio_get_stats.py:40
benchmark::internal::BenchmarkInstance::BenchmarkInstance
BenchmarkInstance(Benchmark *benchmark, int family_index, int per_family_instance_index, const std::vector< int64_t > &args, int threads)
Definition: benchmark_api_internal.cc:10
benchmark::IterationCount
uint64_t IterationCount
Definition: benchmark/include/benchmark/benchmark.h:451
benchmark::BenchmarkName::iterations
std::string iterations
Definition: benchmark/include/benchmark/benchmark.h:1397
benchmark::BenchmarkName::min_time
std::string min_time
Definition: benchmark/include/benchmark/benchmark.h:1396
arg
Definition: cmdline.cc:40
benchmark::BenchmarkName::function_name
std::string function_name
Definition: benchmark/include/benchmark/benchmark.h:1394
benchmark::BenchmarkName::time_type
std::string time_type
Definition: benchmark/include/benchmark/benchmark.h:1399
benchmark::internal::Benchmark::Run
virtual void Run(State &state)=0
benchmark::internal::BenchmarkInstance::benchmark_
Benchmark & benchmark_
Definition: benchmark/src/benchmark_api_internal.h:48
benchmark::internal::Benchmark::measure_process_cpu_time_
bool measure_process_cpu_time_
Definition: benchmark/include/benchmark/benchmark.h:1027
benchmark::internal::Benchmark
Definition: benchmark/include/benchmark/benchmark.h:834
benchmark::internal::Benchmark::use_manual_time_
bool use_manual_time_
Definition: benchmark/include/benchmark/benchmark.h:1029
benchmark::internal::Benchmark::min_time_
double min_time_
Definition: benchmark/include/benchmark/benchmark.h:1024
benchmark::BenchmarkName::args
std::string args
Definition: benchmark/include/benchmark/benchmark.h:1395
benchmark::internal::Benchmark::thread_counts_
std::vector< int > thread_counts_
Definition: benchmark/include/benchmark/benchmark.h:1033
string_util.h
benchmark::StrFormat
std::string StrFormat(const char *format,...)
Definition: benchmark/src/string_util.cc:158
thread_id
static uv_thread_t thread_id
Definition: benchmark-million-async.c:32
benchmark::State
Definition: benchmark/include/benchmark/benchmark.h:503
benchmark::internal::BenchmarkInstance::name_
BenchmarkName name_
Definition: benchmark/src/benchmark_api_internal.h:47
benchmark::internal::ThreadManager
Definition: third_party/benchmark/src/thread_manager.h:12
statistics_
CordzStatistics & statistics_
Definition: abseil-cpp/absl/strings/internal/cordz_info.cc:224
benchmark::internal::Benchmark::iterations_
IterationCount iterations_
Definition: benchmark/include/benchmark/benchmark.h:1025
internal
Definition: benchmark/test/output_test_helper.cc:20
benchmark::internal::Benchmark::arg_names_
std::vector< std::string > arg_names_
Definition: benchmark/include/benchmark/benchmark.h:1020
benchmark::internal::Benchmark::repetitions_
int repetitions_
Definition: benchmark/include/benchmark/benchmark.h:1026
benchmark::internal::BenchmarkInstance::Run
State Run(IterationCount iters, int thread_id, internal::ThreadTimer *timer, internal::ThreadManager *manager, internal::PerfCountersMeasurement *perf_counters_measurement) const
Definition: benchmark_api_internal.cc:83
timer
static uv_timer_t timer
Definition: test-callback-stack.c:34


grpc
Author(s):
autogenerated on Thu Mar 13 2025 02:58:36