Chromium Code Reviews| Index: bench/StraightLineBench.cpp |
| diff --git a/bench/StraightLineBench.cpp b/bench/StraightLineBench.cpp |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..183f0548f160f41ca917bb645d060c754ed77711 |
| --- /dev/null |
| +++ b/bench/StraightLineBench.cpp |
| @@ -0,0 +1,73 @@ |
| +/* |
| + * 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 "SkBitmap.h" |
| +#include "SkCanvas.h" |
| +#include "SkColorPriv.h" |
| +#include "SkPaint.h" |
| +#include "SkRandom.h" |
| +#include "SkShader.h" |
| +#include "SkString.h" |
| +#include "SkTArray.h" |
| + |
| + |
| +class StraightLineBench : public Benchmark { |
| + SkScalar fStrokeWidth; |
| + bool fDoAA; |
| + SkString fName; |
| + enum { |
| + LINES = 500; |
| + }; |
| + SkPoint fStartPts[LINES]; |
| + SkPoint fEndPts[LINES]; |
| + |
| +public: |
| + StraightLineBench(SkScalar width, bool doAA) { |
| + fStrokeWidth = width; |
| + fDoAA = doAA; |
|
robertphillips
2016/05/02 15:33:40
I think you want this to be: straightline_%g_%s
xidachen
2016/05/02 15:54:10
Thank you, changed to straightline, and compilatio
|
| + fName.printf("lines_%g_%s", width, doAA ? "AA" : "BW"); |
| + |
| + SkRandom rand; |
| + for (int i = 0; i < LINES; ++i) { |
| + fStartPts[i].set(rand.nextUScalar1() * 640, rand.nextUScalar1() * 480); |
| + // Half of lines start straight horizontally and half of them vertically |
| + if (i < LINES / 2) { |
| + fEndPts[i].set(fStartPts[i].x(), rand.nextUScalar1() * 480); |
| + } else { |
| + fEndPts[i].set(rand.nextUScalar1() * 640, fStartPts[i].y()); |
| + } |
| + } |
| + } |
| + |
| +protected: |
| + const char* onGetName() override { |
| + return fName.c_str(); |
| + } |
| + |
| + void onDraw(int loops, SkCanvas* canvas) override { |
| + SkPaint paint; |
| + this->setupPaint(&paint); |
| + |
| + paint.setStyle(SkPaint::kStroke_Style); |
| + paint.setAntiAlias(fDoAA); |
| + paint.setStrokeWidth(fStrokeWidth); |
| + |
| + for (int i = 0; i < loops; i++) { |
| + canvas->drawLine(fStartPts[i].x(), fStartPts[i].y(), fEndPts[i].x(), fEndPts[i].y(), paint); |
| + } |
| + } |
| + |
| +private: |
| + typedef Benchmark INHERITED; |
| +}; |
| + |
| +DEF_BENCH(return new StraightLineBench(0, false);) |
| +DEF_BENCH(return new StraightLineBench(SK_Scalar1, false);) |
| +DEF_BENCH(return new StraightLineBench(0, true);) |
| +DEF_BENCH(return new StraightLineBench(SK_Scalar1/2, true);) |
| +DEF_BENCH(return new StraightLineBench(SK_Scalar1, true);) |