xref: /aosp_15_r20/external/skia/bench/ControlBench.cpp (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
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 "bench/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 == Backend::kNonRendering; }
16 
onDrawControlBench17     void onDraw(int loops, SkCanvas*) override {
18         // Nothing terribly useful: force a memory read, a memory write, and some math.
19         [[maybe_unused]] volatile uint32_t rand = 0;
20         for (int i = 0; i < 1000*loops; i++) {
21             uint32_t val = rand * 1664525 + 1013904223;
22             rand = val;
23         }
24     }
25 };
26 DEF_BENCH(return new ControlBench;)
27