【问题标题】:How to special-case the number of iterations in google benchmark?如何在谷歌基准测试中对迭代次数进行特殊处理?
【发布时间】:2020-05-16 20:47:07
【问题描述】:

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

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

【问题讨论】:

    标签: benchmarking google-benchmark


    【解决方案1】:

    BENCHMARK(YourBenchmark)->Iterations(num_ite); 可以解决问题。

    您可以为每个基准测试指定迭代次数。

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

    class BenchmarkBase : public benchmark::Fixture {
    public:
    
        BenchmarkBase() {
            Iterations(num_ite);
        }
    };
    

    【讨论】:

    • 或 benchmark::RegisterBenchmark(...)->Iterations(num_ite) 用于自定义 main()。
    • 我尝试在构造函数或SetUp() 中添加Iterations(num_ite),但都有效。
    • FWIW -- 将其添加到 SetUp() 不起作用,但将其添加到构造函数 确实 对我有用。
    【解决方案2】:

    不支持想要精确调优迭代次数的情况。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-12
      • 1970-01-01
      • 2014-09-12
      • 2014-09-20
      • 1970-01-01
      • 2023-03-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多