谷歌基准自定义main

Google benchmark custom main

本文关键字:main 自定义 基准 谷歌      更新时间:2023-10-16

我希望在基准测试开始使用Google的基准测试库运行之前调用一个自定义主函数。这样我就可以设置一些东西。我找了很多,但什么也找不到。我应该简单地手动修改宏吗?或者简单地使用我的主函数并自己初始化基准。这会以任何方式影响库初始化吗?有没有其他方法不需要我修改宏或复制它的内容?

benchmarkbenchmark_api.h

// Helper macro to create a main routine in a test that runs the benchmarks
#define BENCHMARK_MAIN()                   
  int main(int argc, char** argv) {        
    ::benchmark::Initialize(&argc, argv);  
    ::benchmark::RunSpecifiedBenchmarks(); 
  }

BENCHMARK_MAIN()只是一个辅助宏,因此您应该能够定义自己版本的main(),如下所示:

int main(int argc, char** argv)
{
   your_custom_init();
   ::benchmark::Initialize(&argc, argv);
   ::benchmark::RunSpecifiedBenchmarks();
}

编辑:您还可以定义全局对象,并在其构造函数中执行自定义初始化。我通常这样做,例如用输入数据初始化全局数组:

int data[10];
class MyInit
{
public:
    MyInit()
    {
        for (int n = 0; n < 10; ++n)
            data[n] = n;
    }
};
MyInit my_init;