//----------------------------------------------------------------------------- #include "prime.h" #include #include #include //----------------------------------------------------------------------------- const std::size_t N = 10'000; const auto seed = std::random_device()(); //----------------------------------------------------------------------------- template void test(benchmark::State &state) { using T = typename decltype(std::function{f})::argument_type; std::mt19937 generator; std::uniform_int_distribution distribution; auto rng = [&] { return distribution(generator); }; for (auto _ : state) { std::size_t count = 0; generator.seed(seed); for (std::size_t i = 0; i < N; ++i) if (f(rng())) ++count; state.counters["count"] = count; } } //----------------------------------------------------------------------------- BENCHMARK(test>); BENCHMARK(test>); BENCHMARK(test>); BENCHMARK_MAIN(); //-----------------------------------------------------------------------------