15#include <benchmark/benchmark.h>
25 for (
auto _ : state) {
27 benchmark::ClobberMemory();
34 for (
auto _ : state) {
36 benchmark::ClobberMemory();
43 for (
auto _ : state) {
45 benchmark::ClobberMemory();
53 for (
auto _ : state) {
55 benchmark::ClobberMemory();
63 for (
auto _ : state) {
65 benchmark::ClobberMemory();
73 for (
auto _ : state) {
75 benchmark::ClobberMemory();
86 for (
auto _ : state) {
88 benchmark::ClobberMemory();
95 for (
auto _ : state) {
97 benchmark::ClobberMemory();
104 for (
auto _ : state) {
106 benchmark::ClobberMemory();
114 for (
auto _ : state) {
116 benchmark::ClobberMemory();
124 for (
auto _ : state) {
126 benchmark::ClobberMemory();
134 for (
auto _ : state) {
136 benchmark::ClobberMemory();
147 for (
auto _ : state) {
149 benchmark::ClobberMemory();
156 for (
auto _ : state) {
158 benchmark::ClobberMemory();
165 for (
auto _ : state) {
167 benchmark::ClobberMemory();
175 for (
auto _ : state) {
177 benchmark::ClobberMemory();
185 for (
auto _ : state) {
187 benchmark::ClobberMemory();
195 for (
auto _ : state) {
197 benchmark::ClobberMemory();
208 for (
auto _ : state) {
210 benchmark::ClobberMemory();
217 for (
auto _ : state) {
218 fBin.AtomicIncRelease();
219 benchmark::ClobberMemory();
226 for (
auto _ : state) {
228 benchmark::ClobberMemory();
235 for (
auto _ : state) {
236 fBin.AtomicAddRelease(1.0);
237 benchmark::ClobberMemory();
245 for (
auto _ : state) {
247 benchmark::DoNotOptimize(load);
BENCHMARK_DEFINE_F(RHistAtomic_int, Add)(benchmark
BENCHMARK_REGISTER_F(RHistAtomic_int, Add)
std::enable_if_t< std::is_arithmetic_v< T > > AtomicLoadAcquire(const T *ptr, T *ret)
std::enable_if_t< std::is_arithmetic_v< T > > AtomicStoreRelease(T *ptr, T *val)
std::enable_if_t< std::is_arithmetic_v< T > > AtomicLoad(const T *ptr, T *ret)
std::enable_if_t< std::is_integral_v< T > > AtomicAdd(T *ptr, T val)
std::enable_if_t< std::is_integral_v< T > > AtomicAddRelease(T *ptr, T val)
TMatrixT< Element > & Add(TMatrixT< Element > &target, Element scalar, const TMatrixT< Element > &source)
Modify addition: target += scalar * source.
ROOT::Experimental::RBinWithError fBin
A special bin content type to compute the bin error in weighted filling.
void AtomicLoad(RBinWithError *ret) const