Page MenuHomec4science

main_benchmark.cpp
No OneTemporary

File Metadata

Created
Thu, Apr 25, 11:49

main_benchmark.cpp

/* -------------------------------------------------------------------------- */
#include <aka_iterators.hh>
/* -------------------------------------------------------------------------- */
#include <algorithm>
#include <benchmark/benchmark.h>
#include <vector>
/* -------------------------------------------------------------------------- */
using namespace akantu;
using stream_type = int;
class MyFixture : public benchmark::Fixture {
public:
void SetUp(const ::benchmark::State &state) {
A.resize(state.range(0) / sizeof(stream_type));
B.resize(state.range(0) / sizeof(stream_type));
auto view = enumerate(A, B);
std::for_each(view.begin(), view.end(), [](auto &&data) {
std::get<1>(data) = 2. * std::get<0>(data);
std::get<2>(data) = 0.;
});
}
void TearDown(const ::benchmark::State & /*state*/) {}
std::vector<stream_type> A;
std::vector<stream_type> B;
};
BENCHMARK_DEFINE_F(MyFixture, CopyZip)(benchmark::State &st) {
auto view = zip(A, B);
std::for_each(view.begin(), view.end(),
[](auto &&data) { std::get<1>(data) = std::get<0>(data); });
for (auto _ : st) {
benchmark::DoNotOptimize(
std::for_each(view.begin(), view.end(), [](auto &&data) {
std::get<1>(data) = std::get<0>(data);
}));
}
st.SetBytesProcessed(int64_t(st.iterations()) * int64_t(st.range(0)));
}
BENCHMARK_REGISTER_F(MyFixture, CopyZip)
->RangeMultiplier(2)
->Range(1 << 10, 1 << 26);
BENCHMARK_MAIN();

Event Timeline