使用Google Benchmark库时如何全局设置时间单位为毫秒并启用挂钟时间?
Google Benchmark全局配置默认时间单位与挂钟时间方案
支持全局配置,无需为每个基准测试单独指定参数,有两种常用实现方式:
方案1:代码侧全局配置(一次修改永久生效)
替换Google Benchmark默认提供的BENCHMARK_MAIN()宏,自定义主函数遍历所有已注册的基准测试用例批量配置即可,示例代码如下:
#include <benchmark/benchmark.h> int main(int argc, char** argv) { benchmark::Initialize(&argc, argv); if (benchmark::ReportUnrecognizedArguments(argc, argv)) { return 1; } // 全局批量配置所有基准测试项 for (auto* bench : benchmark::all_registered_benchmarks()) { bench->Unit(benchmark::kMillisecond); // 全局默认时间单位为毫秒 bench->UseRealTime(); // 全局默认使用挂钟时间 } benchmark::RunSpecifiedBenchmarks(); benchmark::Shutdown(); return 0; }
注意:benchmark::all_registered_benchmarks() 接口从Google Benchmark v1.5.0版本开始提供,低于该版本可以升级到最新稳定版后使用。
该方案无需每次运行时额外传参,单个用例如果有特殊需求,单独注册时指定的配置优先级会高于全局配置,不会产生冲突。
方案2:运行时传参配置(无需修改代码)
如果不想改动现有代码,也可以在运行基准测试程序时通过命令行参数全局指定配置:
- 指定全局时间单位为毫秒:添加参数
--benchmark_time_unit=ms - 全局启用挂钟时间:添加参数
--benchmark_use_real_time=true
完整运行示例:
./你的基准测试程序名 --benchmark_time_unit=ms --benchmark_use_real_time=true
内容的提问来源于stack exchange,提问作者ChrisZZ
相关产品推荐
相关产品推荐

