diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-27 18:24:20 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-27 18:24:20 +0000 |
commit | 483eb2f56657e8e7f419ab1a4fab8dce9ade8609 (patch) | |
tree | e5d88d25d870d5dedacb6bbdbe2a966086a0a5cf /src/boost/libs/histogram/benchmark/histogram_filling_gsl.cpp | |
parent | Initial commit. (diff) | |
download | ceph-upstream.tar.xz ceph-upstream.zip |
Adding upstream version 14.2.21.upstream/14.2.21upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/boost/libs/histogram/benchmark/histogram_filling_gsl.cpp')
-rw-r--r-- | src/boost/libs/histogram/benchmark/histogram_filling_gsl.cpp | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/src/boost/libs/histogram/benchmark/histogram_filling_gsl.cpp b/src/boost/libs/histogram/benchmark/histogram_filling_gsl.cpp new file mode 100644 index 00000000..94d73896 --- /dev/null +++ b/src/boost/libs/histogram/benchmark/histogram_filling_gsl.cpp @@ -0,0 +1,45 @@ +// Copyright 2015-2019 Hans Dembinski +// +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt +// or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include <benchmark/benchmark.h> +#include <gsl/gsl_histogram.h> +#include <gsl/gsl_histogram2d.h> +#include "../test/throw_exception.hpp" +#include "generator.hpp" + +#include <boost/assert.hpp> +struct assert_check { + assert_check() { + BOOST_ASSERT(false); // don't run with asserts enabled + } +} _; + +template <class Distribution> +static void fill_1d(benchmark::State& state) { + gsl_histogram* h = gsl_histogram_alloc(100); + gsl_histogram_set_ranges_uniform(h, 0, 1); + generator<Distribution> gen; + for (auto _ : state) benchmark::DoNotOptimize(gsl_histogram_increment(h, gen())); + gsl_histogram_free(h); + state.SetItemsProcessed(state.iterations()); +} + +template <class Distribution> +static void fill_2d(benchmark::State& state) { + gsl_histogram2d* h = gsl_histogram2d_alloc(100, 100); + gsl_histogram2d_set_ranges_uniform(h, 0, 1, 0, 1); + generator<Distribution> gen; + for (auto _ : state) + benchmark::DoNotOptimize(gsl_histogram2d_increment(h, gen(), gen())); + gsl_histogram2d_free(h); + state.SetItemsProcessed(state.iterations() * 2); +} + +BENCHMARK_TEMPLATE(fill_1d, uniform); +BENCHMARK_TEMPLATE(fill_2d, uniform); + +BENCHMARK_TEMPLATE(fill_1d, normal); +BENCHMARK_TEMPLATE(fill_2d, normal); |