谷歌基准测试自定义主函数

11

我希望在使用Google的基准库运行之前,有一个自定义的主函数可以被调用,这样我就可以设置一些东西了。我已经搜索了很多,但是没有找到任何东西。我应该手动修改宏吗?还是直接使用自己的主函数并自己初始化基准测试。这会对库的初始化产生影响吗?有没有其他方法可以不需要我修改那个宏或复制它的内容?

benchmark\benchmark_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(); \
  }
1个回答

18

BENCHMARK_MAIN()只是一个辅助宏,因此您应该能够像这样定义自己的main()版本:

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;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接