aboutsummaryrefslogtreecommitdiffhomepage
path: root/bench/ControlBench.cpp
diff options
context:
space:
mode:
authorGravatar mtklein <mtklein@chromium.org>2015-05-06 12:42:04 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2015-05-06 12:42:04 -0700
commit44d43d8d6e4f9321c9001f269ff433bd06aa81e1 (patch)
tree075b5ee806a80d38d52cbe76072436188cee4005 /bench/ControlBench.cpp
parente4017d8ca709bc0b4fc0f95c26eb592a8d5c597b (diff)
Add a control benchmark.
I'm thinking of using this in perf with something like: ratio(fill(filter("test=foo")), fill(filter("test=control"))) Does that make sense to you? Not sure that this is really a good control bench on all bots, but I propose we just run it a bit and find out if it needs work. BUG=skia: Review URL: https://codereview.chromium.org/1129823003
Diffstat (limited to 'bench/ControlBench.cpp')
-rw-r--r--bench/ControlBench.cpp26
1 files changed, 26 insertions, 0 deletions
diff --git a/bench/ControlBench.cpp b/bench/ControlBench.cpp
new file mode 100644
index 0000000000..8c1177a5e3
--- /dev/null
+++ b/bench/ControlBench.cpp
@@ -0,0 +1,26 @@
+/*
+ * Copyright 2015 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "Benchmark.h"
+
+// This benchmark's runtime should be fairly constant for a given machine,
+// so it can be used as a baseline to control for thermal or other throttling.
+
+struct ControlBench : public Benchmark {
+ const char* onGetName() override { return "control"; }
+ bool isSuitableFor(Backend backend) override { return backend == kNonRendering_Backend; }
+
+ void onDraw(const int loops, SkCanvas*) override {
+ // Nothing terribly useful: force a memory read, a memory write, and some math.
+ volatile uint32_t rand = 0;
+ for (int i = 0; i < 1000*loops; i++) {
+ rand *= 1664525;
+ rand += 1013904223;
+ }
+ }
+};
+DEF_BENCH(return new ControlBench;)