aboutsummaryrefslogtreecommitdiffhomepage
path: root/bench/DashBench.cpp
diff options
context:
space:
mode:
authorGravatar reed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2012-09-04 20:07:23 +0000
committerGravatar reed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2012-09-04 20:07:23 +0000
commit31e9d64cb1a1fe07cdb2e4a5cd64c817a9373a86 (patch)
tree3da3e28fb1c17afb78b6fba2b73165482ed2f836 /bench/DashBench.cpp
parent623ff0a5f7274665c5f43b8806d5f7f1c5e6cef2 (diff)
add bench for drawline + dashing
git-svn-id: http://skia.googlecode.com/svn/trunk@5396 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'bench/DashBench.cpp')
-rw-r--r--bench/DashBench.cpp50
1 files changed, 44 insertions, 6 deletions
diff --git a/bench/DashBench.cpp b/bench/DashBench.cpp
index a47aa71cd8..f6c1399cfa 100644
--- a/bench/DashBench.cpp
+++ b/bench/DashBench.cpp
@@ -182,35 +182,71 @@ class MakeDashBench : public SkBenchmark {
SkString fName;
SkPath fPath;
SkAutoTUnref<SkPathEffect> fPE;
-
+
enum {
N = SkBENCHLOOP(400)
};
-
+
public:
MakeDashBench(void* param, void (*proc)(SkPath*), const char name[]) : INHERITED(param) {
fName.printf("makedash_%s", name);
proc(&fPath);
-
+
SkScalar vals[] = { SkIntToScalar(4), SkIntToScalar(4) };
fPE.reset(new SkDashPathEffect(vals, 2, 0));
}
-
+
protected:
virtual const char* onGetName() SK_OVERRIDE {
return fName.c_str();
}
-
+
virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
SkPath dst;
for (int i = 0; i < N; ++i) {
SkStrokeRec rec(SkStrokeRec::kHairline_InitStyle);
-
+
fPE->filterPath(&dst, fPath, &rec);
dst.rewind();
}
}
+
+private:
+ typedef SkBenchmark INHERITED;
+};
+class DashLineBench : public SkBenchmark {
+ SkString fName;
+ SkPath fPath;
+ SkAutoTUnref<SkPathEffect> fPE;
+
+ enum {
+ N = SkBENCHLOOP(200)
+ };
+
+public:
+ DashLineBench(void* param) : INHERITED(param) {
+ fName.printf("dashline");
+
+ SkScalar vals[] = { SkIntToScalar(1), SkIntToScalar(1) };
+ fPE.reset(new SkDashPathEffect(vals, 2, 0));
+ }
+
+protected:
+ virtual const char* onGetName() SK_OVERRIDE {
+ return fName.c_str();
+ }
+
+ virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+ SkPaint paint;
+ this->setupPaint(&paint);
+ paint.setStrokeWidth(1);
+ paint.setPathEffect(fPE);
+ for (int i = 0; i < N; ++i) {
+ canvas->drawLine(10, 10, 640, 10, paint);
+ }
+ }
+
private:
typedef SkBenchmark INHERITED;
};
@@ -228,6 +264,7 @@ static SkBenchmark* gF3(void* p) { return new DashBench(p, PARAM(gDots), 4); }
static SkBenchmark* gF4(void* p) { return new MakeDashBench(p, make_poly, "poly"); }
static SkBenchmark* gF5(void* p) { return new MakeDashBench(p, make_quad, "quad"); }
static SkBenchmark* gF6(void* p) { return new MakeDashBench(p, make_cubic, "cubic"); }
+static SkBenchmark* gF7(void* p) { return new DashLineBench(p); }
static BenchRegistry gR0(gF0);
static BenchRegistry gR1(gF1);
@@ -236,3 +273,4 @@ static BenchRegistry gR3(gF3);
static BenchRegistry gR4(gF4);
static BenchRegistry gR5(gF5);
static BenchRegistry gR6(gF6);
+static BenchRegistry gR7(gF7);