1 /*
2  * Copyright 2015 Google Inc.
3  *
4  * Use of this source code is governed by a BSD-style license that can be
5  * found in the LICENSE file.
6  */
7 
8 #include "Benchmark.h"
9 
10 // This benchmark's runtime should be fairly constant for a given machine,
11 // so it can be used as a baseline to control for thermal or other throttling.
12 
13 struct ControlBench : public Benchmark {
onGetNameControlBench14     const char* onGetName() override { return "control"; }
isSuitableForControlBench15     bool isSuitableFor(Backend backend) override { return backend == kNonRendering_Backend; }
16 
onDrawControlBench17     void onDraw(const int loops, SkCanvas*) override {
18         // Nothing terribly useful: force a memory read, a memory write, and some math.
19         volatile uint32_t rand = 0;
20         for (int i = 0; i < 1000*loops; i++) {
21             rand *= 1664525;
22             rand += 1013904223;
23         }
24     }
25 };
26 DEF_BENCH(return new ControlBench;)
27