From e18a530afdd879f2f8df8f07a63a19a37e2e12a6 Mon Sep 17 00:00:00 2001 From: "qiankun.miao" Date: Tue, 9 Dec 2014 17:47:05 -0800 Subject: Add bench to measure blur rects performance BUG=skia: Review URL: https://codereview.chromium.org/787913002 --- bench/BlurRectsBench.cpp | 80 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 bench/BlurRectsBench.cpp (limited to 'bench/BlurRectsBench.cpp') diff --git a/bench/BlurRectsBench.cpp b/bench/BlurRectsBench.cpp new file mode 100644 index 0000000000..7b98e00c92 --- /dev/null +++ b/bench/BlurRectsBench.cpp @@ -0,0 +1,80 @@ +/* +* Copyright 2014 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 "SkBlurMaskFilter.h" +#include "SkCanvas.h" +#include "SkPaint.h" +#include "SkPath.h" +#include "SkRect.h" +#include "SkString.h" + +class BlurRectsBench : public Benchmark { +public: + BlurRectsBench(SkRect outer, SkRect inner, SkScalar radius) { + fRadius = radius; + fOuter = outer; + fInner = inner; + } + + virtual const char* onGetName() SK_OVERRIDE { + return fName.c_str(); + } + + void setName(const SkString& name) { + fName = name; + } + + virtual void onDraw(const int loops, SkCanvas* canvas) SK_OVERRIDE { + SkPaint paint; + paint.setMaskFilter(SkBlurMaskFilter::Create(kNormal_SkBlurStyle, fRadius))->unref(); + + SkPath path; + path.addRect(fOuter, SkPath::kCW_Direction); + path.addRect(fInner, SkPath::kCW_Direction); + + for (int i = 0; i < loops; i++) { + canvas->drawPath(path, paint); + } + } + +private: + SkString fName; + SkRect fOuter; + SkRect fInner; + SkScalar fRadius; + + typedef Benchmark INHERITED; +}; + +class BlurRectsNinePatchBench: public BlurRectsBench { +public: + BlurRectsNinePatchBench(SkRect outer, SkRect inner, SkScalar radius) + : INHERITED(outer, inner, radius) { + this->setName(SkString("blurrectsninepatch")); + } +private: + typedef BlurRectsBench INHERITED; +}; + +class BlurRectsNonNinePatchBench: public BlurRectsBench { +public: + BlurRectsNonNinePatchBench(SkRect outer, SkRect inner, SkScalar radius) + : INHERITED(outer, inner, radius) { + SkString name; + this->setName(SkString("blurrectsnonninepatch")); + } +private: + typedef BlurRectsBench INHERITED; +}; + +DEF_BENCH(return new BlurRectsNinePatchBench(SkRect::MakeXYWH(10, 10, 100, 100), + SkRect::MakeXYWH(20, 20, 60, 60), + 2.3f);) +DEF_BENCH(return new BlurRectsNonNinePatchBench(SkRect::MakeXYWH(10, 10, 100, 100), + SkRect::MakeXYWH(50, 50, 10, 10), + 4.3f);) -- cgit v1.2.3