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 <cstddef>
9#include <random>
10#include <vector>
11
12struct RHistEngine_int_Regular1 : public benchmark::Fixture {
13 // The objects are stored and constructed in the fixture to avoid compiler optimizations in the benchmark body taking
14 // advantage of the (constant) constructor parameters.
17 std::vector<double> fNumbers;
18
19 // Avoid GCC warning
20 using benchmark::Fixture::SetUp;
21 void SetUp(benchmark::State &state) final
22 {
23 std::mt19937 gen;
24 std::uniform_real_distribution<> dis;
25 fNumbers.resize(static_cast<std::size_t>(state.range(0)));
26 for (std::size_t i = 0; i < fNumbers.size(); i++) {
27 fNumbers[i] = dis(gen);
28 }
29 }
30};
31
32BENCHMARK_DEFINE_F(RHistEngine_int_Regular1, Fill)(benchmark::State &state)
33{
34 for (auto _ : state) {
35 for (double number : fNumbers) {
36 engine.Fill(number);
37 }
38 }
39}
41
42struct RHistEngine_int_Regular2 : public benchmark::Fixture {
43 // The objects are stored and constructed in the fixture to avoid compiler optimizations in the benchmark body taking
44 // advantage of the (constant) constructor parameters.
47 std::vector<double> fNumbers;
48
49 // Avoid GCC warning
50 using benchmark::Fixture::SetUp;
51 void SetUp(benchmark::State &state) final
52 {
53 std::mt19937 gen;
54 std::uniform_real_distribution<> dis;
55 fNumbers.resize(2 * static_cast<std::size_t>(state.range(0)));
56 for (std::size_t i = 0; i < fNumbers.size(); i++) {
57 fNumbers[i] = dis(gen);
58 }
59 }
60};
61
62BENCHMARK_DEFINE_F(RHistEngine_int_Regular2, Fill)(benchmark::State &state)
63{
64 for (auto _ : state) {
65 for (std::size_t i = 0; i < fNumbers.size(); i += 2) {
66 engine.Fill(fNumbers[i], fNumbers[i + 1]);
67 }
68 }
69}
71
72struct RHistEngine_float_Regular1 : public benchmark::Fixture {
73 // The objects are stored and constructed in the fixture to avoid compiler optimizations in the benchmark body taking
74 // advantage of the (constant) constructor parameters.
77 std::vector<double> fNumbers;
78
79 // Avoid GCC warning
80 using benchmark::Fixture::SetUp;
81 void SetUp(benchmark::State &state) final
82 {
83 std::mt19937 gen;
84 std::uniform_real_distribution<> dis;
85 fNumbers.resize(static_cast<std::size_t>(state.range(0)));
86 for (std::size_t i = 0; i < fNumbers.size(); i++) {
87 fNumbers[i] = dis(gen);
88 }
89 }
90};
91
92BENCHMARK_DEFINE_F(RHistEngine_float_Regular1, Fill)(benchmark::State &state)
93{
94 for (auto _ : state) {
95 for (double number : fNumbers) {
96 engine.Fill(number);
97 }
98 }
99}
101
103{
104 for (auto _ : state) {
105 for (double number : fNumbers) {
106 engine.Fill(number, ROOT::Experimental::RWeight(0.8));
107 }
108 }
109}
111
112struct RHistEngine_float_Regular2 : public benchmark::Fixture {
113 // The objects are stored and constructed in the fixture to avoid compiler optimizations in the benchmark body taking
114 // advantage of the (constant) constructor parameters.
117 std::vector<double> fNumbers;
118
119 // Avoid GCC warning
120 using benchmark::Fixture::SetUp;
121 void SetUp(benchmark::State &state) final
122 {
123 std::mt19937 gen;
124 std::uniform_real_distribution<> dis;
125 fNumbers.resize(2 * static_cast<std::size_t>(state.range(0)));
126 for (std::size_t i = 0; i < fNumbers.size(); i++) {
127 fNumbers[i] = dis(gen);
128 }
129 }
130};
131
132BENCHMARK_DEFINE_F(RHistEngine_float_Regular2, Fill)(benchmark::State &state)
133{
134 for (auto _ : state) {
135 for (std::size_t i = 0; i < fNumbers.size(); i += 2) {
136 engine.Fill(fNumbers[i], fNumbers[i + 1]);
137 }
138 }
139}
141
143{
144 for (auto _ : state) {
145 for (std::size_t i = 0; i < fNumbers.size(); i += 2) {
146 engine.Fill(fNumbers[i], fNumbers[i + 1], ROOT::Experimental::RWeight(0.8));
147 }
148 }
149}
151
152struct RHistEngine_RBinWithError_Regular1 : public benchmark::Fixture {
153 // The objects are stored and constructed in the fixture to avoid compiler optimizations in the benchmark body taking
154 // advantage of the (constant) constructor parameters.
157 std::vector<double> fNumbers;
158
159 // Avoid GCC warning
160 using benchmark::Fixture::SetUp;
161 void SetUp(benchmark::State &state) final
162 {
163 std::mt19937 gen;
164 std::uniform_real_distribution<> dis;
165 fNumbers.resize(static_cast<std::size_t>(state.range(0)));
166 for (std::size_t i = 0; i < fNumbers.size(); i++) {
167 fNumbers[i] = dis(gen);
168 }
169 }
170};
171
173{
174 for (auto _ : state) {
175 for (double number : fNumbers) {
176 engine.Fill(number);
177 }
178 }
179}
181
183{
184 for (auto _ : state) {
185 for (double number : fNumbers) {
186 engine.Fill(number, ROOT::Experimental::RWeight(0.8));
187 }
188 }
189}
191
192struct RHistEngine_RBinWithError_Regular2 : public benchmark::Fixture {
193 // The objects are stored and constructed in the fixture to avoid compiler optimizations in the benchmark body taking
194 // advantage of the (constant) constructor parameters.
197 std::vector<double> fNumbers;
198
199 // Avoid GCC warning
200 using benchmark::Fixture::SetUp;
201 void SetUp(benchmark::State &state) final
202 {
203 std::mt19937 gen;
204 std::uniform_real_distribution<> dis;
205 fNumbers.resize(2 * static_cast<std::size_t>(state.range(0)));
206 for (std::size_t i = 0; i < fNumbers.size(); i++) {
207 fNumbers[i] = dis(gen);
208 }
209 }
210};
211
213{
214 for (auto _ : state) {
215 for (std::size_t i = 0; i < fNumbers.size(); i += 2) {
216 engine.Fill(fNumbers[i], fNumbers[i + 1]);
217 }
218 }
219}
221
223{
224 for (auto _ : state) {
225 for (std::size_t i = 0; i < fNumbers.size(); i += 2) {
226 engine.Fill(fNumbers[i], fNumbers[i + 1], ROOT::Experimental::RWeight(0.8));
227 }
228 }
229}
231
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
#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