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
13struct ControlBench : public Benchmark {
14    const char* onGetName() override { return "control"; }
15    bool isSuitableFor(Backend backend) override { return backend == kNonRendering_Backend; }
16
17    void onDraw(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};
26DEF_BENCH(return new ControlBench;)
27