【问题标题】:Google benchmark custom main谷歌基准自定义主
【发布时间】:2019-01-02 06:43:44
【问题描述】:

我希望在开始使用 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(); \
  }

【问题讨论】:

    标签: c++ benchmarking


    【解决方案1】:

    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;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-10-18
      • 2020-06-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多