diff --git a/test/microbench/test/common.cc b/test/microbench/test/common.cc index 056312cdf349aefd2f09af25a1bbf8f31d9e4d8b..ae5e7e16a43fce54fd157be4a8239170d1c7c2b6 100644 --- a/test/microbench/test/common.cc +++ b/test/microbench/test/common.cc @@ -590,7 +590,7 @@ static void BM_calculate_pi(benchmark::State& state) { benchmark::DoNotOptimize(pi = test_calculate_pi(static_cast(depth))); } -#if 1 +#if 0 std::stringstream ss; ss << pi; state.SetLabel(ss.str()); @@ -600,4 +600,28 @@ static void BM_calculate_pi(benchmark::State& state) { BENCHMARK(BM_calculate_pi); // BENCHMARK(BM_calculate_pi)->ThreadPerCpu(); +// Ref: benchmark/test/benchmark_test.cc +int BENCHMARK_NOINLINE test_factorial(int n) { + register int ret = 0; + benchmark::DoNotOptimize(ret = (n == 1) ? 1 : n * test_factorial(n - 1)); + return ret; +} + +static void BM_factorial(benchmark::State& state) { + register int fac_42 = 0; + register int n = 8; + for (auto _ : state) { + benchmark_DoNotOptimize(); + fac_42 = test_factorial(n); + } + // Prevent compiler optimizations +#if 0 + std::stringstream ss; + ss << fac_42; + state.SetLabel(ss.str()); +#endif +} +BENCHMARK(BM_factorial); +//BENCHMARK(BM_factorial)->ThreadPerCpu(); + BENCHMARK_MAIN();