我正在使用 Google 基准测试我们软件中的一些功能。假设函数签名如下所示。返回类型可以是任何其他派生数据类型。
std::map<uint32_t, bool> func(Obj& o1, Obj& o2);
基准函数看起来像这样。
static void BM_Func(benchmark::State& state) {
// Prepare the objects o1 and o2
for (auto _ : state)
func(Obj& o1, Obj& o2);
}
BENCHMARK(BM_Func);
BENCHMARK_MAIN();
现在,代码编译了,我可以收集基准测试结果。但是,我有以下问题。
- 返回值会发生什么?如果我不再在基准函数中的任何地方使用这些值,我是否应该为此烦恼?
- 我应该像这样调用函数
benchmark::DoNotOptimize( func(Obj& o1, Obj& o2) );
以避免优化吗?我真的不明白何时调用该函数benchmark::DoNotOptimize