#include <benchmark/benchmark.h> static inline constexpr int FIBONACCI_N = 10; int fib(int n) { return n < 2 ? n : fib(n - 1) + fib(n - 2); } static void BM_fib(benchmark::State &state) { for (auto _ : state) { int res = fib(FIBONACCI_N); benchmark::DoNotOptimize(res); } } BENCHMARK(BM_fib); int x; // Magic line. // clang does not use DP anymore: much slower. // gcc chooses a different optimizing approach: much faster.