diff options
author | Yuqian Li <liyuqian@google.com> | 2017-09-21 13:23:49 -0400 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-09-21 17:44:53 +0000 |
commit | 3528eb319019b415c840349d2b35739bc2b38833 (patch) | |
tree | ec124c85f290b579b1fec7cb694601564ae5b5f6 /bench | |
parent | 3b7658a4752e1332c684ad757686ce9ee0e5fbd1 (diff) |
Run the first bench for 1000ms to warm up the nanobench if FLAGS_ms < 1000.
Otherwise, the first few benches' measurements will be inaccurate.
For example, without this CL, the first few measurements are:
337ns, 566µs, 1000µs, ... without "--ms 1000" arg
211ns, 285µs, 874µs, ... with "--ms 1000" arg
With this CL, the first few measurements are:
195ns, 296µs, 1.03ms, ... without "--ms 1000" arg
204ns, 280µs, 859µs, ... with "--ms 1000" arg
In the example above, the first two measurements are vastly (>50%)
different without this CL. I think that's the reason why I keep
using "--ms 1000" arg locally. But it's really only necessary for
the first bench to warm up nanobench. It's a waste to apply
"--ms 1000" to all the following benches.
Bug: skia:
Change-Id: I1924ba3ff9185ed89aeda72794fafd1fe6625eef
Reviewed-on: https://skia-review.googlesource.com/49742
Reviewed-by: Yuqian Li <liyuqian@google.com>
Commit-Queue: Yuqian Li <liyuqian@google.com>
Diffstat (limited to 'bench')
-rw-r--r-- | bench/nanobench.cpp | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/bench/nanobench.cpp b/bench/nanobench.cpp index d784439bb4..04583309ce 100644 --- a/bench/nanobench.cpp +++ b/bench/nanobench.cpp @@ -1284,6 +1284,15 @@ int main(int argc, char** argv) { ? setup_gpu_bench(target, bench.get(), maxFrameLag) : setup_cpu_bench(overhead, target, bench.get()); + if (runs == 0 && FLAGS_ms < 1000) { + // Run the first bench for 1000ms to warm up the nanobench if FLAGS_ms < 1000. + // Otherwise, the first few benches' measurements will be inaccurate. + auto stop = now_ms() + 1000; + do { + time(loops, bench.get(), target); + } while (now_ms() < stop); + } + if (FLAGS_ms) { samples.reset(); auto stop = now_ms() + FLAGS_ms; |