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

Side by Side Diff: bench/RTreeBench.cpp

Issue 23480002: R-Tree -- Don't sort draw commands unless specified. (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: Created 7 years, 3 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | src/core/SkPicture.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 1
2 /* 2 /*
3 * Copyright 2012 Google Inc. 3 * Copyright 2012 Google Inc.
4 * 4 *
5 * Use of this source code is governed by a BSD-style license that can be 5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file. 6 * found in the LICENSE file.
7 */ 7 */
8 8
9 #include "SkBenchmark.h" 9 #include "SkBenchmark.h"
10 #include "SkCanvas.h" 10 #include "SkCanvas.h"
11 #include "SkRTree.h" 11 #include "SkRTree.h"
12 #include "SkRandom.h" 12 #include "SkRandom.h"
13 #include "SkString.h" 13 #include "SkString.h"
14 14
15 // confine rectangles to a smallish area, so queries generally hit something, an d overlap occurs: 15 // confine rectangles to a smallish area, so queries generally hit something, an d overlap occurs:
16 static const int GENERATE_EXTENTS = 1000; 16 static const int GENERATE_EXTENTS = 1000;
17 static const int NUM_BUILD_RECTS = 500; 17 static const int NUM_BUILD_RECTS = 500;
18 static const int NUM_QUERY_RECTS = 5000; 18 static const int NUM_QUERY_RECTS = 5000;
19 static const int NUM_QUERIES = 1000; 19 static const int NUM_QUERIES = 1000;
20 static const int GRID_WIDTH = 100;
20 21
21 typedef SkIRect (*MakeRectProc)(SkMWCRandom&, int, int); 22 typedef SkIRect (*MakeRectProc)(SkMWCRandom&, int, int);
22 23
23 // Time how long it takes to build an R-Tree either bulk-loaded or not 24 // Time how long it takes to build an R-Tree either bulk-loaded or not
24 class BBoxBuildBench : public SkBenchmark { 25 class BBoxBuildBench : public SkBenchmark {
25 public: 26 public:
26 BBoxBuildBench(void* param, const char* name, MakeRectProc proc, bool bulkLo ad, 27 BBoxBuildBench(void* param, const char* name, MakeRectProc proc, bool bulkLo ad,
27 SkBBoxHierarchy* tree) 28 SkBBoxHierarchy* tree)
28 : INHERITED(param) 29 : INHERITED(param)
29 , fTree(tree) 30 , fTree(tree)
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
156 static inline SkIRect make_concentric_rects_increasing(SkMWCRandom&, int index, int numRects) { 157 static inline SkIRect make_concentric_rects_increasing(SkMWCRandom&, int index, int numRects) {
157 SkIRect out = {0, 0, index + 1, index + 1}; 158 SkIRect out = {0, 0, index + 1, index + 1};
158 return out; 159 return out;
159 } 160 }
160 161
161 static inline SkIRect make_concentric_rects_decreasing(SkMWCRandom&, int index, int numRects) { 162 static inline SkIRect make_concentric_rects_decreasing(SkMWCRandom&, int index, int numRects) {
162 SkIRect out = {0, 0, numRects - index, numRects - index}; 163 SkIRect out = {0, 0, numRects - index, numRects - index};
163 return out; 164 return out;
164 } 165 }
165 166
167 static inline SkIRect make_XYordered_rects(SkMWCRandom& rand, int index, int num Rects) {
168 SkIRect out;
169 out.fLeft = index % GRID_WIDTH;
170 out.fTop = index / GRID_WIDTH;
171 out.fRight = out.fLeft + 1 + rand.nextU() % (GENERATE_EXTENTS / 3);
172 out.fBottom = out.fTop + 1 + rand.nextU() % (GENERATE_EXTENTS / 3);
173 return out;
174 }
175 static inline SkIRect make_YXordered_rects(SkMWCRandom& rand, int index, int num Rects) {
176 SkIRect out;
177 out.fLeft = index / GRID_WIDTH;
178 out.fTop = index % GRID_WIDTH;
179 out.fRight = out.fLeft + 1 + rand.nextU() % (GENERATE_EXTENTS / 3);
180 out.fBottom = out.fTop + 1 + rand.nextU() % (GENERATE_EXTENTS / 3);
181 return out;
182 }
183
166 static inline SkIRect make_point_rects(SkMWCRandom& rand, int index, int numRect s) { 184 static inline SkIRect make_point_rects(SkMWCRandom& rand, int index, int numRect s) {
167 SkIRect out; 185 SkIRect out;
168 out.fLeft = rand.nextU() % GENERATE_EXTENTS; 186 out.fLeft = rand.nextU() % GENERATE_EXTENTS;
169 out.fTop = rand.nextU() % GENERATE_EXTENTS; 187 out.fTop = rand.nextU() % GENERATE_EXTENTS;
170 out.fRight = out.fLeft + (GENERATE_EXTENTS / 200); 188 out.fRight = out.fLeft + (GENERATE_EXTENTS / 200);
171 out.fBottom = out.fTop + (GENERATE_EXTENTS / 200); 189 out.fBottom = out.fTop + (GENERATE_EXTENTS / 200);
172 return out; 190 return out;
173 } 191 }
174 192
175 static inline SkIRect make_random_rects(SkMWCRandom& rand, int index, int numRec ts) { 193 static inline SkIRect make_random_rects(SkMWCRandom& rand, int index, int numRec ts) {
(...skipping 10 matching lines...) Expand all
186 out.fLeft = rand.nextU() % GENERATE_EXTENTS; 204 out.fLeft = rand.nextU() % GENERATE_EXTENTS;
187 out.fTop = rand.nextU() % GENERATE_EXTENTS; 205 out.fTop = rand.nextU() % GENERATE_EXTENTS;
188 out.fRight = out.fLeft + (GENERATE_EXTENTS / 3); 206 out.fRight = out.fLeft + (GENERATE_EXTENTS / 3);
189 out.fBottom = out.fTop + (GENERATE_EXTENTS / 3); 207 out.fBottom = out.fTop + (GENERATE_EXTENTS / 3);
190 return out; 208 return out;
191 } 209 }
192 210
193 /////////////////////////////////////////////////////////////////////////////// 211 ///////////////////////////////////////////////////////////////////////////////
194 212
195 static inline SkBenchmark* Fact0(void* p) { 213 static inline SkBenchmark* Fact0(void* p) {
214 return SkNEW_ARGS(BBoxBuildBench, (p, "XYordered", &make_XYordered_rects, fa lse,
215 SkRTree::Create(5, 16)));
216 }
217 static inline SkBenchmark* Fact1(void* p) {
218 return SkNEW_ARGS(BBoxBuildBench, (p, "XYordered", &make_XYordered_rects, tr ue,
219 SkRTree::Create(5, 16)));
220 }
221 static inline SkBenchmark* Fact2(void* p) {
222 return SkNEW_ARGS(BBoxBuildBench, (p, "(unsorted)XYordered", &make_XYordered _rects, true,
223 SkRTree::Create(5, 16, 1, false)));
224 }
225 static inline SkBenchmark* Fact3(void* p) {
226 return SkNEW_ARGS(BBoxQueryBench, (p, "XYordered", &make_XYordered_rects, tr ue,
227 BBoxQueryBench::kRandom_QueryType, SkRTree::Create(5, 16)) );
228 }
229 static inline SkBenchmark* Fact4(void* p) {
230 return SkNEW_ARGS(BBoxQueryBench, (p, "(unsorted)XYordered", &make_XYordered _rects, true,
231 BBoxQueryBench::kRandom_QueryType, SkRTree::Create(5, 16, 1, false)));
232 }
233
234 static inline SkBenchmark* Fact5(void* p) {
235 return SkNEW_ARGS(BBoxBuildBench, (p, "YXordered", &make_YXordered_rects, fa lse,
236 SkRTree::Create(5, 16)));
237 }
238 static inline SkBenchmark* Fact6(void* p) {
239 return SkNEW_ARGS(BBoxBuildBench, (p, "YXordered", &make_YXordered_rects, tr ue,
240 SkRTree::Create(5, 16)));
241 }
242 static inline SkBenchmark* Fact7(void* p) {
243 return SkNEW_ARGS(BBoxBuildBench, (p, "(unsorted)YXordered", &make_YXordered _rects, true,
244 SkRTree::Create(5, 16, 1, false)));
245 }
246 static inline SkBenchmark* Fact8(void* p) {
247 return SkNEW_ARGS(BBoxQueryBench, (p, "YXordered", &make_YXordered_rects, tr ue,
248 BBoxQueryBench::kRandom_QueryType, SkRTree::Create(5, 16)) );
249 }
250 static inline SkBenchmark* Fact9(void* p) {
251 return SkNEW_ARGS(BBoxQueryBench, (p, "(unsorted)YXordered", &make_YXordered _rects, true,
252 BBoxQueryBench::kRandom_QueryType, SkRTree::Create(5, 16, 1, false)));
253 }
254
255 static inline SkBenchmark* Fact10(void* p) {
256 return SkNEW_ARGS(BBoxBuildBench, (p, "random", &make_random_rects, false,
257 SkRTree::Create(5, 16)));
258 }
259 static inline SkBenchmark* Fact11(void* p) {
196 return SkNEW_ARGS(BBoxBuildBench, (p, "random", &make_random_rects, true, 260 return SkNEW_ARGS(BBoxBuildBench, (p, "random", &make_random_rects, true,
197 SkRTree::Create(5, 16))); 261 SkRTree::Create(5, 16)));
198 } 262 }
199 static inline SkBenchmark* Fact1(void* p) { 263 static inline SkBenchmark* Fact12(void* p) {
200 return SkNEW_ARGS(BBoxBuildBench, (p, "random", &make_random_rects, false, 264 return SkNEW_ARGS(BBoxBuildBench, (p, "(unsorted)random", &make_random_rects , true,
201 SkRTree::Create(5, 16))); 265 SkRTree::Create(5, 16, 1, false)));
202 } 266 }
203 static inline SkBenchmark* Fact2(void* p) { 267 static inline SkBenchmark* Fact13(void* p) {
268 return SkNEW_ARGS(BBoxQueryBench, (p, "random", &make_random_rects, true,
269 BBoxQueryBench::kRandom_QueryType, SkRTree::Create(5, 16)) );
270 }
271 static inline SkBenchmark* Fact14(void* p) {
272 return SkNEW_ARGS(BBoxQueryBench, (p, "(unsorted)random", &make_random_rects , true,
273 BBoxQueryBench::kRandom_QueryType, SkRTree::Create(5, 16, 1, false)));
274 }
275
276 static inline SkBenchmark* Fact15(void* p) {
204 return SkNEW_ARGS(BBoxBuildBench, (p, "concentric", 277 return SkNEW_ARGS(BBoxBuildBench, (p, "concentric",
205 &make_concentric_rects_increasing, true, SkRTree::Create(5 , 16))); 278 &make_concentric_rects_increasing, true, SkRTree::Create(5 , 16)));
206 } 279 }
207 static inline SkBenchmark* Fact3(void* p) { 280 static inline SkBenchmark* Fact16(void* p) {
208 return SkNEW_ARGS(BBoxQueryBench, (p, "random", &make_random_rects, true, 281 return SkNEW_ARGS(BBoxBuildBench, (p, "(unsorted)concentric",
282 &make_concentric_rects_increasing, true, SkRTree::Create(5 , 16, 1, false)));
283 }
284 static inline SkBenchmark* Fact17(void* p) {
285 return SkNEW_ARGS(BBoxQueryBench, (p, "concentric", &make_concentric_rects_i ncreasing, true,
209 BBoxQueryBench::kRandom_QueryType, SkRTree::Create(5, 16)) ); 286 BBoxQueryBench::kRandom_QueryType, SkRTree::Create(5, 16)) );
210 } 287 }
211 static inline SkBenchmark* Fact4(void* p) { 288 static inline SkBenchmark* Fact18(void* p) {
212 return SkNEW_ARGS(BBoxQueryBench, (p, "random", &make_random_rects, false, 289 return SkNEW_ARGS(BBoxQueryBench, (p, "(unsorted)concentric", &make_concentr ic_rects_increasing, true,
213 BBoxQueryBench::kRandom_QueryType, SkRTree::Create(5, 16)) ); 290 BBoxQueryBench::kRandom_QueryType, SkRTree::Create(5, 16, 1, false)));
214 } 291 }
215 292
293 static BenchRegistry gReg18(Fact18);
294 static BenchRegistry gReg17(Fact17);
295 static BenchRegistry gReg16(Fact16);
296 static BenchRegistry gReg15(Fact15);
297 static BenchRegistry gReg14(Fact14);
298 static BenchRegistry gReg13(Fact13);
299 static BenchRegistry gReg12(Fact12);
300 static BenchRegistry gReg11(Fact11);
301 static BenchRegistry gReg10(Fact10);
302 static BenchRegistry gReg9(Fact9);
303 static BenchRegistry gReg8(Fact8);
304 static BenchRegistry gReg7(Fact7);
305 static BenchRegistry gReg6(Fact6);
306 static BenchRegistry gReg5(Fact5);
307 static BenchRegistry gReg4(Fact4);
308 static BenchRegistry gReg3(Fact3);
309 static BenchRegistry gReg2(Fact2);
310 static BenchRegistry gReg1(Fact1);
216 static BenchRegistry gReg0(Fact0); 311 static BenchRegistry gReg0(Fact0);
217 static BenchRegistry gReg1(Fact1); 312
218 static BenchRegistry gReg2(Fact2);
219 static BenchRegistry gReg3(Fact3);
220 static BenchRegistry gReg4(Fact4);
OLDNEW
« no previous file with comments | « no previous file | src/core/SkPicture.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698