我知道--benchmark_repetitions
旗帜,这不是我需要的。我希望能够为一个基准指定迭代次数。我可以使用一个--benchmark_iterations
设置所有基准的迭代次数的标志。
我知道谷歌基准测试很聪明,可以计算出需要多少次迭代才能获得良好的测量结果。这对于大多数用例来说已经足够了,但我的用例不同。我需要能够精确控制迭代次数。
我知道--benchmark_repetitions
旗帜,这不是我需要的。我希望能够为一个基准指定迭代次数。我可以使用一个--benchmark_iterations
设置所有基准的迭代次数的标志。
我知道谷歌基准测试很聪明,可以计算出需要多少次迭代才能获得良好的测量结果。这对于大多数用例来说已经足够了,但我的用例不同。我需要能够精确控制迭代次数。
BENCHMARK(YourBenchmark)->Iterations(num_ite);
会成功的。
您可以为每个基准测试指定迭代。
如果您正在使用BENCHMARK_F
,请在构造函数中执行此操作
class BenchmarkBase : public benchmark::Fixture {
public:
BenchmarkBase() {
Iterations(num_ite);
}
};
它不支持想要精确调整迭代次数的情况。
正如您所指出的,它会一直运行,直到有足够的迭代来获得足够好的信号(尽管它实际上还没有检查统计数据)。我们曾经有一种方法来设置迭代计数,但是与时间相关标志的交互很复杂,并且让试图配置他们的基准的人感到困惑,所以它们被删除了。
不过,这是经常出现的事情,如果有一种方法可以同时支持迭代和计时,或者支持迭代,但如果我们认为结果没有意义,也会发出警告,那么我愿意考虑。