Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(23)

Side by Side Diff: bench/MeasureBench.cpp

Issue 2187083002: Add initial CurveMeasure code (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Remove unused variable Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | gyp/utils.gypi » ('j') | src/utils/SkCurveMeasure.cpp » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 /*
2 * Copyright 2016 Google Inc.
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7 #include <cmath>
8
9 #include "Benchmark.h"
10 #include "SkCurveMeasure.h"
11 #include "SkPath.h"
12 #include "SkPathMeasure.h"
13 #include "SkString.h"
14
15 class MeasureBench : public Benchmark {
16 protected:
17 SkString fName;
18
19 SkPath fPath;
20
21 bool fUsePathMeasure;
22 float fSize;
23 size_t fPieces;
24
25 SkPoint fPts[3];
26
27 public:
28 MeasureBench(bool usePathMeasure, float size, size_t pieces) : fUsePathMeasu re(usePathMeasure), fSize(size), fPieces(pieces) {
29 fName.printf("measure_%s_%.1f_%ld", fUsePathMeasure ? "pathMeasure" : "c urveMeasure", fSize, fPieces);
30
31 auto p1 = SkPoint::Make(0, 0);
32 auto p2 = SkPoint::Make(30*fSize, 0);
33 auto p3 = SkPoint::Make(15*fSize, 15*fSize);
34
35 fPts[0] = p1;
36 fPts[1] = p2;
37 fPts[2] = p3;
38
39 this->setPath();
40 }
41
42 protected:
43 const char* onGetName() override {
44 return fName.c_str();
45 }
46
47 void setPath() {
48 fPath.moveTo(fPts[0]);
49 fPath.quadTo(fPts[1], fPts[2]);
50 }
51
52 //// measurement code
53
54 void do_pathMeasure(SkCanvas* canvas) {
55 SkPathMeasure meas(fPath, false);
56
57 SkScalar totalLength = meas.getLength();
58 SkScalar pieceLength = totalLength/fPieces;
59
60 SkPoint point;
61 for (size_t i = 0; i <= fPieces; i++) {
62 if(meas.getPosTan(i*pieceLength, &point, nullptr)) {};
63 }
64 }
65
66 void do_curveMeasure(SkCanvas* canvas) {
67 SkCurveMeasure meas(fPts, kQuad_SegType);
68
69 SkScalar totalLength = meas.getLength();
70 SkScalar pieceLength = totalLength/fPieces;
71
72 SkPoint point;
73 for (size_t i = 0; i <= fPieces; i++) {
74 meas.getPosTan(i*pieceLength, &point, nullptr);
75 }
76 }
77
78 void onDraw(int loops, SkCanvas* canvas) override {
79 for (int i = 0; i < loops; i++) {
80 for (int j = 0; j < 1000; j++) {
81 if (fUsePathMeasure) {
82 do_pathMeasure(canvas);
83 }
84 else {
85 do_curveMeasure(canvas);
86 }
87 }
88 }
89 }
90
91 private:
92 typedef Benchmark INHERITED;
93 };
94
95 ///////////////////////////////////////////////////////////////////////////////
96
97 DEF_BENCH( return new MeasureBench(true, 1, 2); )
98 DEF_BENCH( return new MeasureBench(true, 2, 2); )
99 DEF_BENCH( return new MeasureBench(true, 10, 2); )
100 DEF_BENCH( return new MeasureBench(true, 100, 2); )
101 DEF_BENCH( return new MeasureBench(true, 1000, 2); )
102
103 DEF_BENCH( return new MeasureBench(true, 1, 1); )
104 DEF_BENCH( return new MeasureBench(true, 1, 2); )
105 DEF_BENCH( return new MeasureBench(true, 1, 3); )
106 DEF_BENCH( return new MeasureBench(true, 1, 4); )
107 DEF_BENCH( return new MeasureBench(true, 1, 5); )
108 DEF_BENCH( return new MeasureBench(true, 2, 1); )
109 DEF_BENCH( return new MeasureBench(true, 2, 2); )
110 DEF_BENCH( return new MeasureBench(true, 2, 3); )
111 DEF_BENCH( return new MeasureBench(true, 2, 4); )
112 DEF_BENCH( return new MeasureBench(true, 2, 5); )
113 DEF_BENCH( return new MeasureBench(true, 10, 10); )
114 DEF_BENCH( return new MeasureBench(true, 10, 20); )
115 DEF_BENCH( return new MeasureBench(true, 10, 30); )
116 DEF_BENCH( return new MeasureBench(true, 10, 40); )
117 DEF_BENCH( return new MeasureBench(true, 10, 50); )
118 DEF_BENCH( return new MeasureBench(true, 100, 100); )
119 DEF_BENCH( return new MeasureBench(true, 100, 200); )
120 DEF_BENCH( return new MeasureBench(true, 100, 300); )
121 DEF_BENCH( return new MeasureBench(true, 100, 400); )
122 DEF_BENCH( return new MeasureBench(true, 100, 500); )
123 DEF_BENCH( return new MeasureBench(true, 1000, 1000); )
124 DEF_BENCH( return new MeasureBench(true, 1000, 2000); )
125 DEF_BENCH( return new MeasureBench(true, 1000, 3000); )
126 DEF_BENCH( return new MeasureBench(true, 1000, 4000); )
127 DEF_BENCH( return new MeasureBench(true, 1000, 5000); )
128
129
130 DEF_BENCH( return new MeasureBench(false, 1, 2); )
131 DEF_BENCH( return new MeasureBench(false, 2, 2); )
132 DEF_BENCH( return new MeasureBench(false, 10, 2); )
133 DEF_BENCH( return new MeasureBench(false, 100, 2); )
134 DEF_BENCH( return new MeasureBench(false, 1000, 2); )
135
136 DEF_BENCH( return new MeasureBench(false, 1, 1); )
137 DEF_BENCH( return new MeasureBench(false, 1, 2); )
138 DEF_BENCH( return new MeasureBench(false, 1, 3); )
139 DEF_BENCH( return new MeasureBench(false, 1, 4); )
140 DEF_BENCH( return new MeasureBench(false, 1, 5); )
141 DEF_BENCH( return new MeasureBench(false, 2, 1); )
142 DEF_BENCH( return new MeasureBench(false, 2, 2); )
143 DEF_BENCH( return new MeasureBench(false, 2, 3); )
144 DEF_BENCH( return new MeasureBench(false, 2, 4); )
145 DEF_BENCH( return new MeasureBench(false, 2, 5); )
146 DEF_BENCH( return new MeasureBench(false, 10, 10); )
147 DEF_BENCH( return new MeasureBench(false, 10, 20); )
148 DEF_BENCH( return new MeasureBench(false, 10, 30); )
149 DEF_BENCH( return new MeasureBench(false, 10, 40); )
150 DEF_BENCH( return new MeasureBench(false, 10, 50); )
151 DEF_BENCH( return new MeasureBench(false, 100, 100); )
152 DEF_BENCH( return new MeasureBench(false, 100, 200); )
153 DEF_BENCH( return new MeasureBench(false, 100, 300); )
154 DEF_BENCH( return new MeasureBench(false, 100, 400); )
155 DEF_BENCH( return new MeasureBench(false, 100, 500); )
156 DEF_BENCH( return new MeasureBench(false, 1000, 1000); )
157 DEF_BENCH( return new MeasureBench(false, 1000, 2000); )
158 DEF_BENCH( return new MeasureBench(false, 1000, 3000); )
159 DEF_BENCH( return new MeasureBench(false, 1000, 4000); )
160 DEF_BENCH( return new MeasureBench(false, 1000, 5000); )
OLDNEW
« no previous file with comments | « no previous file | gyp/utils.gypi » ('j') | src/utils/SkCurveMeasure.cpp » ('J')

Powered by Google App Engine
This is Rietveld 408576698