From 0a3dae9df47573a99950499c67099bc41fe4d13a Mon Sep 17 00:00:00 2001 From: Yinghai Lu Date: Fri, 7 Oct 2016 18:38:14 -0700 Subject: [PATCH] Limit maximum number of iterations in folly::Benchmark with bm_max_iters Summary: We are using `bm_max_iters` in folly and other part of the code in fbcode but it didn't really exist in Benchmark.cpp. For example: https://github.com/facebook/folly/blob/master/folly/test/function_benchmark/main.cpp#L29 This patch adds back this functionality. This diff depends on D3990600. Reviewed By: yfeldblum Differential Revision: D3989499 fbshipit-source-id: d2303b2bebb196e84a592d54a72af68171971491 --- folly/Benchmark.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/folly/Benchmark.cpp b/folly/Benchmark.cpp index 370a737a..2b64c12b 100644 --- a/folly/Benchmark.cpp +++ b/folly/Benchmark.cpp @@ -50,6 +50,11 @@ DEFINE_int64( 1, "Minimum # of iterations we'll try for each benchmark."); +DEFINE_int64( + bm_max_iters, + 1L << 30L, + "Maximum # of iterations we'll try for each benchmark."); + DEFINE_int32( bm_max_secs, 1, @@ -262,7 +267,8 @@ static double runBenchmarkGetNSPerIteration(const BenchmarkFun& fun, size_t actualEpochs = 0; for (; actualEpochs < epochs; ++actualEpochs) { - for (unsigned int n = FLAGS_bm_min_iters; n < (1UL << 30); n *= 2) { + const auto maxIters = FLAGS_bm_max_iters; + for (unsigned int n = FLAGS_bm_min_iters; n < maxIters; n *= 2) { auto const nsecsAndIter = fun(n); if (nsecsAndIter.first < minNanoseconds) { continue; -- 2.34.1