#include int fib1(int n) { if (n < 2) return n; else return fib1(n - 1) + fib1(n - 2); } int fib2(int n) { if (n < 2) return n; else return fib2(n - 2) + fib2(n - 1); } int fib3(int n) { return n < 2 ? n : fib3(n - 1) + fib3(n - 2); } int fib4(int n) { return n < 2 ? n : fib4(n - 2) + fib4(n - 1); } template static void test(benchmark::State &state) { int n = 0; for (auto _: state) benchmark::DoNotOptimize(f(n++ & 31)); } BENCHMARK(test)->Iterations(10'000); BENCHMARK(test)->Iterations(10'000); BENCHMARK(test)->Iterations(10'000); BENCHMARK(test)->Iterations(10'000); BENCHMARK_MAIN();