Fix calibration loop failure condition.
authormtklein <mtklein@chromium.org>
Mon, 4 Aug 2014 20:57:39 +0000 (13:57 -0700)
committerCommit bot <commit-bot@chromium.org>
Mon, 4 Aug 2014 20:57:39 +0000 (13:57 -0700)
With the old logic, if the last attempt succeeded, we'd say we failed.

We also print two lines for loop calibration failures.  Quiet that down.

BUG=skia:
R=djsollen@google.com, mtklein@google.com

Author: mtklein@chromium.org

Review URL: https://codereview.chromium.org/431503004

bench/nanobench.cpp

index 811fc7f7e91fe2c933cfb82b651041e0faceeba2..2dfd33f594abea06cf4034dc34ffcafc0b7687a4 100644 (file)
@@ -107,16 +107,16 @@ static int clamp_loops(int loops) {
 
 static int cpu_bench(const double overhead, Benchmark* bench, SkCanvas* canvas, double* samples) {
     // First figure out approximately how many loops of bench it takes to make overhead negligible.
-    double bench_plus_overhead;
+    double bench_plus_overhead = 0.0;
     int round = 0;
-    do {
-        bench_plus_overhead = time(1, bench, canvas, NULL);
-        if (++round == FLAGS_maxCalibrationAttempts) {
+    while (bench_plus_overhead < overhead) {
+        if (round++ == FLAGS_maxCalibrationAttempts) {
             SkDebugf("WARNING: Can't estimate loops for %s (%s vs. %s); skipping.\n",
                      bench->getName(), HUMANIZE(bench_plus_overhead), HUMANIZE(overhead));
             return 0;
         }
-    } while (bench_plus_overhead < overhead);
+        bench_plus_overhead = time(1, bench, canvas, NULL);
+    }
 
     // Later we'll just start and stop the timer once but loop N times.
     // We'll pick N to make timer overhead negligible:
@@ -547,8 +547,7 @@ int nanobench_main() {
                  cpu_bench(       overhead, bench.get(), canvas, samples.get());
 
             if (loops == 0) {
-                SkDebugf("Unable to time %s\t%s (overhead %s)\n",
-                         bench->getName(), config, HUMANIZE(overhead));
+                // Can't be timed.  A warning note has already been printed.
                 continue;
             }