Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
hist_benchmark_engine.cxx
Go to the documentation of this file.
3#include <ROOT/RWeight.hxx>
4
5#include <benchmark/benchmark.h>
6
7#include <random>
8#include <vector>
9
10struct RHistEngine_int_Regular1 : public benchmark::Fixture {
11 // The objects are stored and constructed in the fixture to avoid compiler optimizations in the benchmark body taking
12 // advantage of the (constant) constructor parameters.
15 std::vector<double> fNumbers;
16
17 // Avoid GCC warning
18 using benchmark::Fixture::SetUp;
19 void SetUp(benchmark::State &state) final
20 {
21 std::mt19937 gen;
22 std::uniform_real_distribution<> dis;
23 fNumbers.resize(state.range(0));
24 for (std::size_t i = 0; i < fNumbers.size(); i++) {
25 fNumbers[i] = dis(gen);
26 }
27 }
28};
29
31{
32 for (auto _ : state) {
33 for (double number : fNumbers) {
34 engine.Fill(number);
35 }
36 }
37}
39
40struct RHistEngine_int_Regular2 : public benchmark::Fixture {
41 // The objects are stored and constructed in the fixture to avoid compiler optimizations in the benchmark body taking
42 // advantage of the (constant) constructor parameters.
45 std::vector<double> fNumbers;
46
47 // Avoid GCC warning
48 using benchmark::Fixture::SetUp;
49 void SetUp(benchmark::State &state) final
50 {
51 std::mt19937 gen;
52 std::uniform_real_distribution<> dis;
53 fNumbers.resize(2 * state.range(0));
54 for (std::size_t i = 0; i < fNumbers.size(); i++) {
55 fNumbers[i] = dis(gen);
56 }
57 }
58};
59
61{
62 for (auto _ : state) {
63 for (std::size_t i = 0; i < fNumbers.size(); i += 2) {
64 engine.Fill(fNumbers[i], fNumbers[i + 1]);
65 }
66 }
67}
69
70struct RHistEngine_float_Regular1 : public benchmark::Fixture {
71 // The objects are stored and constructed in the fixture to avoid compiler optimizations in the benchmark body taking
72 // advantage of the (constant) constructor parameters.
75 std::vector<double> fNumbers;
76
77 // Avoid GCC warning
78 using benchmark::Fixture::SetUp;
79 void SetUp(benchmark::State &state) final
80 {
81 std::mt19937 gen;
82 std::uniform_real_distribution<> dis;
83 fNumbers.resize(state.range(0));
84 for (std::size_t i = 0; i < fNumbers.size(); i++) {
85 fNumbers[i] = dis(gen);
86 }
87 }
88};
89
91{
92 for (auto _ : state) {
93 for (double number : fNumbers) {
94 engine.Fill(number);
95 }
96 }
97}
99
101{
102 for (auto _ : state) {
103 for (double number : fNumbers) {
104 engine.Fill(number, ROOT::Experimental::RWeight(0.8));
105 }
106 }
107}
109
110struct RHistEngine_float_Regular2 : public benchmark::Fixture {
111 // The objects are stored and constructed in the fixture to avoid compiler optimizations in the benchmark body taking
112 // advantage of the (constant) constructor parameters.
115 std::vector<double> fNumbers;
116
117 // Avoid GCC warning
118 using benchmark::Fixture::SetUp;
119 void SetUp(benchmark::State &state) final
120 {
121 std::mt19937 gen;
122 std::uniform_real_distribution<> dis;
123 fNumbers.resize(2 * state.range(0));
124 for (std::size_t i = 0; i < fNumbers.size(); i++) {
125 fNumbers[i] = dis(gen);
126 }
127 }
128};
129
131{
132 for (auto _ : state) {
133 for (std::size_t i = 0; i < fNumbers.size(); i += 2) {
134 engine.Fill(fNumbers[i], fNumbers[i + 1]);
135 }
136 }
137}
139
141{
142 for (auto _ : state) {
143 for (std::size_t i = 0; i < fNumbers.size(); i += 2) {
144 engine.Fill(fNumbers[i], fNumbers[i + 1], ROOT::Experimental::RWeight(0.8));
145 }
146 }
147}
149
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
Int_t Fill(Double_t x) override
#define _(A, B)
Definition cfortran.h:108
A histogram data structure to bin data along multiple dimensions.
A regular axis with equidistant bins in the interval .
BENCHMARK_DEFINE_F(RHistEngine_int_Regular1, Fill)(benchmark
BENCHMARK_MAIN()
BENCHMARK_REGISTER_F(RHistEngine_int_Regular1, Fill) -> Range(0, 32768)
ROOT::Experimental::RRegularAxis axis
ROOT::Experimental::RHistEngine< float > engine
void SetUp(benchmark::State &state) final
ROOT::Experimental::RHistEngine< float > engine
void SetUp(benchmark::State &state) final
ROOT::Experimental::RRegularAxis axis
ROOT::Experimental::RHistEngine< int > engine
void SetUp(benchmark::State &state) final
ROOT::Experimental::RRegularAxis axis
ROOT::Experimental::RRegularAxis axis
ROOT::Experimental::RHistEngine< int > engine
void SetUp(benchmark::State &state) final
A weight for filling histograms.
Definition RWeight.hxx:17