//----------------------------------------------------------------------------- // ackermann.cc //----------------------------------------------------------------------------- #include "ackermann.h" #include //----------------------------------------------------------------------------- template static void test(benchmark::State &state) { assert(f(ackermann::M - 1, ackermann::N - 1) == ackermann::f_3_11); for (auto _ : state) for (unsigned m = 0; m < ackermann::M; ++m) for (unsigned n = 0; n < ackermann::N; ++n) benchmark::DoNotOptimize(f(m, n)); } //----------------------------------------------------------------------------- BENCHMARK(test>); BENCHMARK(test>); BENCHMARK(test>); BENCHMARK(test>); BENCHMARK(test>); BENCHMARK(test>); #ifdef __has_include #if __has_include() BENCHMARK(test>); BENCHMARK(test>); #endif // __has_include #endif // __has_include() // BENCHMARK(test>)->Iterations(1'000'000); // BENCHMARK(test>)->Iterations(1'000'000); // BENCHMARK(test>)->Iterations(1'000'000); // BENCHMARK(test>)->Iterations(1'000'000); // BENCHMARK(test>)->Iterations(1'000'000); // BENCHMARK(test>)->Iterations(1'000'000); // #ifdef __has_include // #if __has_include() // BENCHMARK(test>)->Iterations(1'000'000); // BENCHMARK(test>)->Iterations(1'000'000); // #endif // __has_include // #endif // __has_include() //----------------------------------------------------------------------------- BENCHMARK_MAIN(); //-----------------------------------------------------------------------------