61 std::size_t samples, std::size_t warming_up_samples,
66 warming_up_samples_(warming_up_samples),
67 iterations_(iterations),
68 analysis_type_(analysis_type) {
69 if (samples <= warming_up_samples) {
72 data_.reserve(threads_);
73 const std::size_t used_samples = samples - warming_up_samples;
74 for (std::size_t i = 0; i < threads_; ++i) {
75 data_.emplace_back(used_samples, 0.0);
86 void add(std::size_t thread_index, std::size_t sample_index,
double val) {
87 if (sample_index < warming_up_samples_) {
90 data_.at(thread_index).at(sample_index - warming_up_samples_) += val;
99 const std::vector<std::vector<clock::Duration>>& durations) {
100 const std::size_t used_samples = samples_ - warming_up_samples_;
101 for (std::size_t i = 0; i < threads_; ++i) {
102 for (std::size_t j = 0; j < used_samples; ++j) {
103 double& val = data_.at(i).at(j);
105 switch (analysis_type_) {
107 val /=
static_cast<double>(iterations_);
110 val /= durations.at(i).at(j).seconds();
138 [[nodiscard]]
auto data() const noexcept
139 -> const
std::vector<
std::vector<
double>>& {
148 std::vector<std::vector<double>> data_{};
151 std::size_t threads_;
154 std::size_t samples_;
157 std::size_t warming_up_samples_;
160 std::size_t iterations_;
Declaration of calc_stat function.
Class of names of custom outputs.
Class of exceptions in this library.
auto data() const noexcept -> const std::vector< std::vector< double > > &
Get data.
CustomStatOutput(CustomOutputName name, std::size_t threads, std::size_t samples, std::size_t warming_up_samples, std::size_t iterations, CustomOutputAnalysisType analysis_type)
Constructor.
void preprocess(const std::vector< std::vector< clock::Duration > > &durations)
Preprocess data.
auto name() const noexcept -> const CustomOutputName &
Get the name.
auto stat() const -> Statistics
Calculate statistics.
void add(std::size_t thread_index, std::size_t sample_index, double val)
Add a value.
Class to calculate statistics.
Definition of CustomOutputName class.
Definition of Duration class.
CustomOutputAnalysisType
Enumeration of types of analysis applied to custom outputs.
@ rate_per_sec
Rate per sec.
auto calc_stat(const std::vector< std::vector< clock::Duration > > &durations, std::size_t iterations) -> stat::Statistics
Calculate statistics.
Namespace of stat_bench source codes.
Definition of StatBenchException class.
Definition of Statistics class.