Google 基准自定义主要
Google benchmark custom main
我想在 运行 使用 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(); \
}
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;
我想在 运行 使用 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(); \
}
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;