36#include <benchmark/benchmark.h>
38#include "DGtal/base/Common.h"
39#include "DGtal/kernel/SpaceND.h"
40#include "DGtal/kernel/PointVector.h"
41#include "DGtal/kernel/domains/HyperRectDomain.h"
48 :
public benchmark::Fixture
50 static constexpr std::size_t
dim = 3;
51 static constexpr signed long long int size = 200;
72BENCHMARK_DEFINE_F(
BenchDomain, DomainTraversal)(benchmark::State& state)
77 for (
auto const& pt :
domain)
79 benchmark::DoNotOptimize(check);
82 state.SetItemsProcessed(
domain.size() * state.iterations());
85BENCHMARK_DEFINE_F(
BenchDomain, DomainReverseTraversal)(benchmark::State& state)
90 for (
auto it =
domain.rbegin(), it_end =
domain.rend(); it != it_end; ++it)
92 benchmark::DoNotOptimize(check);
95 state.SetItemsProcessed(
domain.size() * state.iterations());
98BENCHMARK_DEFINE_F(
BenchDomain, DomainTraversalSubRange)(benchmark::State& state)
103 for (
auto const& pt :
domain.subRange(dimensions))
105 benchmark::DoNotOptimize(check);
108 state.SetItemsProcessed(
domain.size() * state.iterations());
111BENCHMARK_DEFINE_F(
BenchDomain, DomainReverseTraversalSubRange)(benchmark::State& state)
116 const auto range =
domain.subRange(dimensions);
117 for (
auto it = range.rbegin(), it_end = range.rend(); it != it_end; ++it)
119 benchmark::DoNotOptimize(check);
122 state.SetItemsProcessed(
domain.size() * state.iterations());
125BENCHMARK_REGISTER_F(
BenchDomain, DomainTraversal)->Unit(benchmark::kMillisecond);
126BENCHMARK_REGISTER_F(
BenchDomain, DomainReverseTraversal)->Unit(benchmark::kMillisecond);
127BENCHMARK_REGISTER_F(
BenchDomain, DomainTraversalSubRange)->Unit(benchmark::kMillisecond);
128BENCHMARK_REGISTER_F(
BenchDomain, DomainReverseTraversalSubRange)->Unit(benchmark::kMillisecond);
130int main(
int argc,
char* argv[])
132 benchmark::Initialize(&argc, argv);
133 benchmark::RunSpecifiedBenchmarks();
Aim: Parallelepidec region of a digital space, model of a 'CDomain'.
PointVector< dim, Integer > Point
Points in DGtal::SpaceND.
DGtal is the top-level namespace which contains all DGtal functions and types.
DGtal::uint32_t Dimension
std::vector< Point::Dimension > dimensions
DGtal::SpaceND< dim > Space
static constexpr std::size_t dim
DGtal::HyperRectDomain< Space > Domain
static constexpr signed long long int size