15 #include <benchmark/benchmark.h>
22 #include <range/v3/view/generate.hpp>
23 #include <range/v3/view/take_exactly.hpp>
24 #include <range/v3/view/transform.hpp>
30 void BM_Hashing(benchmark::State&
state) {
31 using Tuple = std::tuple<double, double, double>;
32 constexpr std::array kClusteringResolution{1., 1., 1.};
35 const auto count =
state.range(0);
36 state.SetComplexityN(count);
38 for (
auto _ :
state) {
39 auto hashes = ranges::views::generate([]() {
return std::make_tuple(1., 2., 3.); }) |
40 ranges::views::transform([hasher](
const auto& tuple) {
return hasher(tuple); }) |
41 ranges::views::take_exactly(count);
43 auto first = std::begin(hashes);
44 auto last = std::end(hashes);
46 while (first != last) {
47 benchmark::DoNotOptimize(value = *first++);
52 BENCHMARK(BM_Hashing)->RangeMultiplier(2)->Range(100
'000, 1'000
'000)->Complexity();