如何特殊处理谷歌基准测试中的迭代次数?

Yix*_*Liu 11 benchmarking google-benchmark

我知道该--benchmark_repetitions标志,但这不是我需要的。我希望能够指定一个基准测试的迭代次数。我可以使用一个--benchmark_iterations标志来设置所有基准的迭代次数。

我知道谷歌基准测试很聪明,可以计算出需要多少次迭代才能获得良好的测量结果。这对于大多数用例来说已经足够了,但我的用例有所不同。我需要能够精确控制迭代次数。

Har*_*per 10

BENCHMARK(YourBenchmark)->Iterations(num_ite);会成功的。

您可以为每个基准指定迭代。

如果您正在使用BENCHMARK_F,请在构造函数中执行此操作

class BenchmarkBase : public benchmark::Fixture {
public:

    BenchmarkBase() {
        Iterations(num_ite);
    }
};
Run Code Online (Sandbox Code Playgroud)


dma*_*dma 2

它不支持想要精确调整迭代计数的情况。

正如您所指出的,它会一直运行,直到有足够的迭代来获得足够好的信号(尽管它尚未实际检查统计数据)。我们曾经有一种方法来设置迭代计数,但与计时相关标志的交互很复杂,并且会让尝试配置基准的人感到困惑,因此它们被删除了。

不过,这是经常出现的事情,如果有一种方法我们可以同时支持迭代和计时,或者支持迭代,但如果我们认为结果没有意义,也会发出警告,那么我愿意考虑它。