diff options
Diffstat (limited to 'bench/QuickRejectBench.cpp')
-rw-r--r-- | bench/QuickRejectBench.cpp | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/bench/QuickRejectBench.cpp b/bench/QuickRejectBench.cpp new file mode 100644 index 0000000000..1feade41f5 --- /dev/null +++ b/bench/QuickRejectBench.cpp @@ -0,0 +1,61 @@ +/* + * Copyright 2016 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" +#include "SkCanvas.h" +#include "SkRandom.h" + +class QuickRejectBench : public Benchmark { + enum { N = 1000000 }; + float fFloats[N]; + int fInts [N]; + + const char* onGetName() override { return "quick_reject"; } + bool isSuitableFor(Backend backend) override { return backend != kNonRendering_Backend; } + + void onDelayedSetup() override { + SkRandom rand; + for (int i = 0; i < N; ++i) { + fFloats[i] = 300.0f * (rand.nextSScalar1() + 0.5f); + } + } + + void onDraw(int loops, SkCanvas* canvas) override { + while (loops --> 0) { + for (int i = 0; i < N - 4; i++) { + if (canvas->quickReject(*(SkRect*)(fFloats+i))) { + fInts[i] = 11; + } else { + fInts[i] = 24; + } + } + } + } +}; +DEF_BENCH( return new QuickRejectBench; ) + +class ConcatBench : public Benchmark { + SkMatrix fMatrix; + + const char* onGetName() override { return "concat"; } + bool isSuitableFor(Backend backend) override { return backend != kNonRendering_Backend; } + + void onDelayedSetup() override { + SkRandom r; + fMatrix.setScale(5.0f, 5.0f); + fMatrix.setTranslateX(10.0f); + fMatrix.setTranslateY(10.0f); + } + + void onDraw(int loops, SkCanvas* canvas) override { + while (loops --> 0) { + canvas->setMatrix(SkMatrix::MakeScale(3.0f)); + canvas->concat(fMatrix); + } + } +}; +DEF_BENCH( return new ConcatBench; ) |