Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
hist_benchmark_engine.cxx
Go to the documentation of this file.
4#include <ROOT/RWeight.hxx>
5
6#include <benchmark/benchmark.h>
7
8#include <random>
9#include <vector>
10
11struct RHistEngine_int_Regular1 : public benchmark::Fixture {
12 // The objects are stored and constructed in the fixture to avoid compiler optimizations in the benchmark body taking
13 // advantage of the (constant) constructor parameters.
16 std::vector<double> fNumbers;
17
18 // Avoid GCC warning
19 using benchmark::Fixture::SetUp;
20 void SetUp(benchmark::State &state) final
21 {
22 std::mt19937 gen;
23 std::uniform_real_distribution<> dis;
24 fNumbers.resize(state.range(0));
25 for (std::size_t i = 0; i < fNumbers.size(); i++) {
26 fNumbers[i] = dis(gen);
27 }
28 }
29};
30
32{
33 for (auto _ : state) {
34 for (double number : fNumbers) {
35 engine.Fill(number);
36 }
37 }
38}
40
41struct RHistEngine_int_Regular2 : public benchmark::Fixture {
42 // The objects are stored and constructed in the fixture to avoid compiler optimizations in the benchmark body taking
43 // advantage of the (constant) constructor parameters.
46 std::vector<double> fNumbers;
47
48 // Avoid GCC warning
49 using benchmark::Fixture::SetUp;
50 void SetUp(benchmark::State &state) final
51 {
52 std::mt19937 gen;
53 std::uniform_real_distribution<> dis;
54 fNumbers.resize(2 * state.range(0));
55 for (std::size_t i = 0; i < fNumbers.size(); i++) {
56 fNumbers[i] = dis(gen);
57 }
58 }
59};
60
62{
63 for (auto _ : state) {
64 for (std::size_t i = 0; i < fNumbers.size(); i += 2) {
65 engine.Fill(fNumbers[i], fNumbers[i + 1]);
66 }
67 }
68}
70
71struct RHistEngine_float_Regular1 : public benchmark::Fixture {
72 // The objects are stored and constructed in the fixture to avoid compiler optimizations in the benchmark body taking
73 // advantage of the (constant) constructor parameters.
76 std::vector<double> fNumbers;
77
78 // Avoid GCC warning
79 using benchmark::Fixture::SetUp;
80 void SetUp(benchmark::State &state) final
81 {
82 std::mt19937 gen;
83 std::uniform_real_distribution<> dis;
84 fNumbers.resize(state.range(0));
85 for (std::size_t i = 0; i < fNumbers.size(); i++) {
86 fNumbers[i] = dis(gen);
87 }
88 }
89};
90
92{
93 for (auto _ : state) {
94 for (double number : fNumbers) {
95 engine.Fill(number);
96 }
97 }
98}
100
102{
103 for (auto _ : state) {
104 for (double number : fNumbers) {
105 engine.Fill(number, ROOT::Experimental::RWeight(0.8));
106 }
107 }
108}
110
111struct RHistEngine_float_Regular2 : public benchmark::Fixture {
112 // The objects are stored and constructed in the fixture to avoid compiler optimizations in the benchmark body taking
113 // advantage of the (constant) constructor parameters.
116 std::vector<double> fNumbers;
117
118 // Avoid GCC warning
119 using benchmark::Fixture::SetUp;
120 void SetUp(benchmark::State &state) final
121 {
122 std::mt19937 gen;
123 std::uniform_real_distribution<> dis;
124 fNumbers.resize(2 * state.range(0));
125 for (std::size_t i = 0; i < fNumbers.size(); i++) {
126 fNumbers[i] = dis(gen);
127 }
128 }
129};
130
132{
133 for (auto _ : state) {
134 for (std::size_t i = 0; i < fNumbers.size(); i += 2) {
135 engine.Fill(fNumbers[i], fNumbers[i + 1]);
136 }
137 }
138}
140
142{
143 for (auto _ : state) {
144 for (std::size_t i = 0; i < fNumbers.size(); i += 2) {
145 engine.Fill(fNumbers[i], fNumbers[i + 1], ROOT::Experimental::RWeight(0.8));
146 }
147 }
148}
150
151struct RHistEngine_RBinWithError_Regular1 : public benchmark::Fixture {
152 // The objects are stored and constructed in the fixture to avoid compiler optimizations in the benchmark body taking
153 // advantage of the (constant) constructor parameters.
156 std::vector<double> fNumbers;
157
158 // Avoid GCC warning
159 using benchmark::Fixture::SetUp;
160 void SetUp(benchmark::State &state) final
161 {
162 std::mt19937 gen;
163 std::uniform_real_distribution<> dis;
164 fNumbers.resize(state.range(0));
165 for (std::size_t i = 0; i < fNumbers.size(); i++) {
166 fNumbers[i] = dis(gen);
167 }
168 }
169};
170
172{
173 for (auto _ : state) {
174 for (double number : fNumbers) {
175 engine.Fill(number);
176 }
177 }
178}
180
182{
183 for (auto _ : state) {
184 for (double number : fNumbers) {
185 engine.Fill(number, ROOT::Experimental::RWeight(0.8));
186 }
187 }
188}
190
191struct RHistEngine_RBinWithError_Regular2 : public benchmark::Fixture {
192 // The objects are stored and constructed in the fixture to avoid compiler optimizations in the benchmark body taking
193 // advantage of the (constant) constructor parameters.
196 std::vector<double> fNumbers;
197
198 // Avoid GCC warning
199 using benchmark::Fixture::SetUp;
200 void SetUp(benchmark::State &state) final
201 {
202 std::mt19937 gen;
203 std::uniform_real_distribution<> dis;
204 fNumbers.resize(2 * state.range(0));
205 for (std::size_t i = 0; i < fNumbers.size(); i++) {
206 fNumbers[i] = dis(gen);
207 }
208 }
209};
210
212{
213 for (auto _ : state) {
214 for (std::size_t i = 0; i < fNumbers.size(); i += 2) {
215 engine.Fill(fNumbers[i], fNumbers[i + 1]);
216 }
217 }
218}
220
222{
223 for (auto _ : state) {
224 for (std::size_t i = 0; i < fNumbers.size(); i += 2) {
225 engine.Fill(fNumbers[i], fNumbers[i + 1], ROOT::Experimental::RWeight(0.8));
226 }
227 }
228}
230
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
void SetUp(benchmark::State &state) final
ROOT::Experimental::RHistEngine< ROOT::Experimental::RBinWithError > engine
ROOT::Experimental::RHistEngine< ROOT::Experimental::RBinWithError > engine
void SetUp(benchmark::State &state) final
ROOT::Experimental::RRegularAxis axis
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