//----------------------------------------------------------------------------- #include "fibonacci.h" #include #include //----------------------------------------------------------------------------- template static void test(benchmark::State &state) { using type = decltype(f(0)); assert(f(fibonacci::limits::x) == fibonacci::limits::y); static auto seed = std::random_device()(); std::mt19937_64 engine; std::uniform_int_distribution distribution(0, fibonacci::limits::x); auto rng = [&] { return distribution(engine); }; for (auto _ : state) { engine.seed(seed); for (type i = 0; i < fibonacci::limits::x; ++i) benchmark::DoNotOptimize(f(rng())); } } //----------------------------------------------------------------------------- // BENCHMARK(test>); // too slow BENCHMARK(test>); BENCHMARK(test>); BENCHMARK(test>); BENCHMARK(test>); BENCHMARK(test>); //----------------------------------------------------------------------------- BENCHMARK_MAIN(); //-----------------------------------------------------------------------------