aboutsummaryrefslogtreecommitdiffhomepage
path: root/bench/ControlBench.cpp
blob: d76184c43c2a34b0f39501872f354d35c0f46ef5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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(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;)