C++ 谷歌基准定制设置和拆卸方法

C++ 谷歌基准定制设置和拆卸方法,c++,benchmarking,microbenchmark,google-benchmark,C++,Benchmarking,Microbenchmark,Google Benchmark,我正在使用库对一些代码进行基准测试。我希望在一次调用实际的基准代码之前调用一个setup方法,而不是每次都重复调用多个基准方法调用。。例如: static void BM_SomeFunction(benchmark::State& state) { // Perform setup here for (auto _ : state) { // This code gets timed } } 正如我们所看到的,对于我指定的范围,设置代码将在这里被多次调用。我确实看

我正在使用库对一些代码进行基准测试。我希望在一次调用实际的基准代码之前调用一个setup方法,而不是每次都重复调用多个基准方法调用。。例如:

static void BM_SomeFunction(benchmark::State& state) {
  // Perform setup here
  for (auto _ : state) {
    // This code gets timed
  }
}

正如我们所看到的,对于我指定的范围,设置代码将在这里被多次调用。我确实看过夹具测试。但我的问题是,它可以不使用夹具测试来完成吗。如果是的话,我们怎么做呢

据我所知,该函数被调用多次,因为
基准测试
动态地决定需要运行多少次基准测试才能获得可靠的结果。如果您不想使用设备,有多种解决方法。您可以使用全局或静态类成员
bool
来检查是否已调用设置函数(不要忘记在运行设置例程后进行设置)。另一种可能是使用在其ctor中调用setup方法的单例:

类设置
{
设置()
{
//调用设置函数

是的,我希望有一个内置的解决方案。我正在看它的文档。(如果你在多个基准测试中使用这个装置,那么ctor会被调用多次。)。这是我的问题。我只想让它运行一次。因为我的设置步骤往往非常耗时。@KishanKumar请看一下我答案的开头。我使用单例编辑了一个可能的解决方案。很抱歉,这感觉像是一个黑客。我将对它进行测试。它看起来会起作用。如果没有其他答案,我将接受答案是一样的。但若你们遇到内置的方法,那个么它仍然是great@KishanKumar我在文档中没有找到设置功能。但是,这里有一个指向一个非常类似主题的链接:。回答的人听起来像是一个基准测试开发人员。他似乎还建议使用全局变量或静态fixture成员。Greetings@KishanKumar也许我刚才在答案末尾添加的另一个功能更符合您的喜好,并且不觉得太“黑”;)