144d43d8d6e4f9321c9001f269ff433bd06aa81e1mtklein/* 244d43d8d6e4f9321c9001f269ff433bd06aa81e1mtklein * Copyright 2015 Google Inc. 344d43d8d6e4f9321c9001f269ff433bd06aa81e1mtklein * 444d43d8d6e4f9321c9001f269ff433bd06aa81e1mtklein * Use of this source code is governed by a BSD-style license that can be 544d43d8d6e4f9321c9001f269ff433bd06aa81e1mtklein * found in the LICENSE file. 644d43d8d6e4f9321c9001f269ff433bd06aa81e1mtklein */ 744d43d8d6e4f9321c9001f269ff433bd06aa81e1mtklein 844d43d8d6e4f9321c9001f269ff433bd06aa81e1mtklein#include "Benchmark.h" 944d43d8d6e4f9321c9001f269ff433bd06aa81e1mtklein 1044d43d8d6e4f9321c9001f269ff433bd06aa81e1mtklein// This benchmark's runtime should be fairly constant for a given machine, 1144d43d8d6e4f9321c9001f269ff433bd06aa81e1mtklein// so it can be used as a baseline to control for thermal or other throttling. 1244d43d8d6e4f9321c9001f269ff433bd06aa81e1mtklein 1344d43d8d6e4f9321c9001f269ff433bd06aa81e1mtkleinstruct ControlBench : public Benchmark { 1444d43d8d6e4f9321c9001f269ff433bd06aa81e1mtklein const char* onGetName() override { return "control"; } 1544d43d8d6e4f9321c9001f269ff433bd06aa81e1mtklein bool isSuitableFor(Backend backend) override { return backend == kNonRendering_Backend; } 1644d43d8d6e4f9321c9001f269ff433bd06aa81e1mtklein 1744d43d8d6e4f9321c9001f269ff433bd06aa81e1mtklein void onDraw(const int loops, SkCanvas*) override { 1844d43d8d6e4f9321c9001f269ff433bd06aa81e1mtklein // Nothing terribly useful: force a memory read, a memory write, and some math. 1944d43d8d6e4f9321c9001f269ff433bd06aa81e1mtklein volatile uint32_t rand = 0; 2044d43d8d6e4f9321c9001f269ff433bd06aa81e1mtklein for (int i = 0; i < 1000*loops; i++) { 2144d43d8d6e4f9321c9001f269ff433bd06aa81e1mtklein rand *= 1664525; 2244d43d8d6e4f9321c9001f269ff433bd06aa81e1mtklein rand += 1013904223; 2344d43d8d6e4f9321c9001f269ff433bd06aa81e1mtklein } 2444d43d8d6e4f9321c9001f269ff433bd06aa81e1mtklein } 2544d43d8d6e4f9321c9001f269ff433bd06aa81e1mtklein}; 2644d43d8d6e4f9321c9001f269ff433bd06aa81e1mtkleinDEF_BENCH(return new ControlBench;) 27