RTreeBench.cpp revision e0e7cfe44bb9d66d76120a79e5275c294bacaa22
1981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com 2981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com/* 3981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com * Copyright 2012 Google Inc. 4981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com * 5981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com * Use of this source code is governed by a BSD-style license that can be 6981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com * found in the LICENSE file. 7981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com */ 8981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com 9981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com#include "SkBenchmark.h" 10981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com#include "SkCanvas.h" 11981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com#include "SkRTree.h" 12981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com#include "SkRandom.h" 13981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com#include "SkString.h" 14981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com 15981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com// confine rectangles to a smallish area, so queries generally hit something, and overlap occurs: 16981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.comstatic const int GENERATE_EXTENTS = 1000; 17981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.comstatic const int NUM_BUILD_RECTS = 500; 18981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.comstatic const int NUM_QUERY_RECTS = 5000; 19981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.comstatic const int NUM_QUERIES = 1000; 208c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.comstatic const int GRID_WIDTH = 100; 21981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com 22e0e7cfe44bb9d66d76120a79e5275c294bacaa22commit-bot@chromium.orgtypedef SkIRect (*MakeRectProc)(SkRandom&, int, int); 23981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com 24981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com// Time how long it takes to build an R-Tree either bulk-loaded or not 25981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.comclass BBoxBuildBench : public SkBenchmark { 26981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.compublic: 27981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com BBoxBuildBench(void* param, const char* name, MakeRectProc proc, bool bulkLoad, 28981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com SkBBoxHierarchy* tree) 296c778164a743f8760dca251524d51848548b436fskia.committer@gmail.com : INHERITED(param) 30981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com , fTree(tree) 31981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com , fProc(proc) 3261348d1cc68e7fa40d08c2c4bc03218305033838rileya@google.com , fBulkLoad(bulkLoad) { 3361348d1cc68e7fa40d08c2c4bc03218305033838rileya@google.com fName.append("rtree_"); 3461348d1cc68e7fa40d08c2c4bc03218305033838rileya@google.com fName.append(name); 3561348d1cc68e7fa40d08c2c4bc03218305033838rileya@google.com fName.append("_build"); 36981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com if (fBulkLoad) { 3761348d1cc68e7fa40d08c2c4bc03218305033838rileya@google.com fName.append("_bulk"); 38981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com } 399dc2713fc4a75e7fbee2f985057fde680a07c7f0tomhudson@google.com fIsRendering = false; 4061348d1cc68e7fa40d08c2c4bc03218305033838rileya@google.com } 4107a05d5130ee0d8444960fdba574e69b7254f1dfrobertphillips@google.com virtual ~BBoxBuildBench() { 424813458d89fb276680168848bd861b307cf83f51rileya@google.com fTree->unref(); 4307a05d5130ee0d8444960fdba574e69b7254f1dfrobertphillips@google.com } 4461348d1cc68e7fa40d08c2c4bc03218305033838rileya@google.comprotected: 457fb83c8c72f2a035e84a4ee4ee6abcf5a4872166commit-bot@chromium.org virtual const char* onGetName() SK_OVERRIDE { 4661348d1cc68e7fa40d08c2c4bc03218305033838rileya@google.com return fName.c_str(); 47981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com } 487fb83c8c72f2a035e84a4ee4ee6abcf5a4872166commit-bot@chromium.org virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE { 49e0e7cfe44bb9d66d76120a79e5275c294bacaa22commit-bot@chromium.org SkRandom rand; 50981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com for (int i = 0; i < SkBENCHLOOP(100); ++i) { 51981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com for (int j = 0; j < NUM_BUILD_RECTS; ++j) { 52981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com fTree->insert(reinterpret_cast<void*>(j), fProc(rand, j, NUM_BUILD_RECTS), 53981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com fBulkLoad); 54981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com } 55981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com fTree->flushDeferredInserts(); 56981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com fTree->clear(); 57981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com } 58981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com } 59981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.comprivate: 60981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com SkBBoxHierarchy* fTree; 61981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com MakeRectProc fProc; 6261348d1cc68e7fa40d08c2c4bc03218305033838rileya@google.com SkString fName; 63981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com bool fBulkLoad; 64981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com typedef SkBenchmark INHERITED; 65981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com}; 66981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com 67981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com// Time how long it takes to perform queries on an R-Tree, bulk-loaded or not 68981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.comclass BBoxQueryBench : public SkBenchmark { 69981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.compublic: 70981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com enum QueryType { 71981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com kSmall_QueryType, // small queries 72981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com kLarge_QueryType, // large queries 73981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com kRandom_QueryType,// randomly sized queries 74981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com kFull_QueryType // queries that cover everything 75981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com }; 76981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com 776c778164a743f8760dca251524d51848548b436fskia.committer@gmail.com BBoxQueryBench(void* param, const char* name, MakeRectProc proc, bool bulkLoad, 78981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com QueryType q, SkBBoxHierarchy* tree) 796c778164a743f8760dca251524d51848548b436fskia.committer@gmail.com : INHERITED(param) 80981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com , fTree(tree) 81981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com , fProc(proc) 82981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com , fBulkLoad(bulkLoad) 83981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com , fQuery(q) { 8461348d1cc68e7fa40d08c2c4bc03218305033838rileya@google.com fName.append("rtree_"); 8561348d1cc68e7fa40d08c2c4bc03218305033838rileya@google.com fName.append(name); 8661348d1cc68e7fa40d08c2c4bc03218305033838rileya@google.com fName.append("_query"); 8761348d1cc68e7fa40d08c2c4bc03218305033838rileya@google.com if (fBulkLoad) { 8861348d1cc68e7fa40d08c2c4bc03218305033838rileya@google.com fName.append("_bulk"); 8961348d1cc68e7fa40d08c2c4bc03218305033838rileya@google.com } 909dc2713fc4a75e7fbee2f985057fde680a07c7f0tomhudson@google.com fIsRendering = false; 91981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com } 9207a05d5130ee0d8444960fdba574e69b7254f1dfrobertphillips@google.com virtual ~BBoxQueryBench() { 934813458d89fb276680168848bd861b307cf83f51rileya@google.com fTree->unref(); 9407a05d5130ee0d8444960fdba574e69b7254f1dfrobertphillips@google.com } 95981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.comprotected: 967fb83c8c72f2a035e84a4ee4ee6abcf5a4872166commit-bot@chromium.org virtual const char* onGetName() SK_OVERRIDE { 9761348d1cc68e7fa40d08c2c4bc03218305033838rileya@google.com return fName.c_str(); 98981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com } 997fb83c8c72f2a035e84a4ee4ee6abcf5a4872166commit-bot@chromium.org virtual void onPreDraw() SK_OVERRIDE { 100e0e7cfe44bb9d66d76120a79e5275c294bacaa22commit-bot@chromium.org SkRandom rand; 1017fb83c8c72f2a035e84a4ee4ee6abcf5a4872166commit-bot@chromium.org for (int j = 0; j < SkBENCHLOOP(NUM_QUERY_RECTS); ++j) { 1027fb83c8c72f2a035e84a4ee4ee6abcf5a4872166commit-bot@chromium.org fTree->insert(reinterpret_cast<void*>(j), fProc(rand, j, 1037fb83c8c72f2a035e84a4ee4ee6abcf5a4872166commit-bot@chromium.org SkBENCHLOOP(NUM_QUERY_RECTS)), fBulkLoad); 1047fb83c8c72f2a035e84a4ee4ee6abcf5a4872166commit-bot@chromium.org } 1057fb83c8c72f2a035e84a4ee4ee6abcf5a4872166commit-bot@chromium.org fTree->flushDeferredInserts(); 1067fb83c8c72f2a035e84a4ee4ee6abcf5a4872166commit-bot@chromium.org } 1077fb83c8c72f2a035e84a4ee4ee6abcf5a4872166commit-bot@chromium.org 1087fb83c8c72f2a035e84a4ee4ee6abcf5a4872166commit-bot@chromium.org virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE { 109e0e7cfe44bb9d66d76120a79e5275c294bacaa22commit-bot@chromium.org SkRandom rand; 110981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com for (int i = 0; i < SkBENCHLOOP(NUM_QUERIES); ++i) { 111981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com SkTDArray<void*> hits; 112981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com SkIRect query; 113981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com switch(fQuery) { 114981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com case kSmall_QueryType: 115981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com query.fLeft = rand.nextU() % GENERATE_EXTENTS; 116981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com query.fTop = rand.nextU() % GENERATE_EXTENTS; 117981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com query.fRight = query.fLeft + (GENERATE_EXTENTS / 20); 118981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com query.fBottom = query.fTop + (GENERATE_EXTENTS / 20); 119981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com break; 120981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com case kLarge_QueryType: 121981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com query.fLeft = rand.nextU() % GENERATE_EXTENTS; 122981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com query.fTop = rand.nextU() % GENERATE_EXTENTS; 123981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com query.fRight = query.fLeft + (GENERATE_EXTENTS / 2); 124981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com query.fBottom = query.fTop + (GENERATE_EXTENTS / 2); 125981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com break; 126981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com case kFull_QueryType: 127981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com query.fLeft = -GENERATE_EXTENTS; 128981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com query.fTop = -GENERATE_EXTENTS; 129981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com query.fRight = 2 * GENERATE_EXTENTS; 130981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com query.fBottom = 2 * GENERATE_EXTENTS; 131981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com break; 132981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com default: // fallthrough 133981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com case kRandom_QueryType: 134981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com query.fLeft = rand.nextU() % GENERATE_EXTENTS; 135981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com query.fTop = rand.nextU() % GENERATE_EXTENTS; 136981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com query.fRight = query.fLeft + 1 + rand.nextU() % (GENERATE_EXTENTS / 2); 137981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com query.fBottom = query.fTop + 1 + rand.nextU() % (GENERATE_EXTENTS / 2); 138981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com break; 139981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com }; 140981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com fTree->search(query, &hits); 141981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com } 142981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com } 143981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.comprivate: 144981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com SkBBoxHierarchy* fTree; 145981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com MakeRectProc fProc; 14661348d1cc68e7fa40d08c2c4bc03218305033838rileya@google.com SkString fName; 147981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com bool fBulkLoad; 148981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com QueryType fQuery; 149981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com typedef SkBenchmark INHERITED; 150981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com}; 151981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com 152e0e7cfe44bb9d66d76120a79e5275c294bacaa22commit-bot@chromium.orgstatic inline SkIRect make_simple_rect(SkRandom&, int index, int numRects) { 153981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com SkIRect out = {0, 0, GENERATE_EXTENTS, GENERATE_EXTENTS}; 154981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com return out; 155981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com} 156981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com 157e0e7cfe44bb9d66d76120a79e5275c294bacaa22commit-bot@chromium.orgstatic inline SkIRect make_concentric_rects_increasing(SkRandom&, int index, int numRects) { 158981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com SkIRect out = {0, 0, index + 1, index + 1}; 159981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com return out; 160981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com} 161981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com 162e0e7cfe44bb9d66d76120a79e5275c294bacaa22commit-bot@chromium.orgstatic inline SkIRect make_concentric_rects_decreasing(SkRandom&, int index, int numRects) { 163981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com SkIRect out = {0, 0, numRects - index, numRects - index}; 164981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com return out; 165981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com} 166981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com 167e0e7cfe44bb9d66d76120a79e5275c294bacaa22commit-bot@chromium.orgstatic inline SkIRect make_XYordered_rects(SkRandom& rand, int index, int numRects) { 1688c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.com SkIRect out; 1698c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.com out.fLeft = index % GRID_WIDTH; 1708c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.com out.fTop = index / GRID_WIDTH; 1710d60db60109951053f97bd6deac8fe00526b7231sglez@google.com out.fRight = out.fLeft + 1 + rand.nextU() % (GENERATE_EXTENTS / 3); 1720d60db60109951053f97bd6deac8fe00526b7231sglez@google.com out.fBottom = out.fTop + 1 + rand.nextU() % (GENERATE_EXTENTS / 3); 1738c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.com return out; 1748c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.com} 175e0e7cfe44bb9d66d76120a79e5275c294bacaa22commit-bot@chromium.orgstatic inline SkIRect make_YXordered_rects(SkRandom& rand, int index, int numRects) { 1768c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.com SkIRect out; 1778c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.com out.fLeft = index / GRID_WIDTH; 1788c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.com out.fTop = index % GRID_WIDTH; 1790d60db60109951053f97bd6deac8fe00526b7231sglez@google.com out.fRight = out.fLeft + 1 + rand.nextU() % (GENERATE_EXTENTS / 3); 1800d60db60109951053f97bd6deac8fe00526b7231sglez@google.com out.fBottom = out.fTop + 1 + rand.nextU() % (GENERATE_EXTENTS / 3); 1818c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.com return out; 1828c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.com} 1838c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.com 184e0e7cfe44bb9d66d76120a79e5275c294bacaa22commit-bot@chromium.orgstatic inline SkIRect make_point_rects(SkRandom& rand, int index, int numRects) { 185981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com SkIRect out; 186981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com out.fLeft = rand.nextU() % GENERATE_EXTENTS; 187981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com out.fTop = rand.nextU() % GENERATE_EXTENTS; 188981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com out.fRight = out.fLeft + (GENERATE_EXTENTS / 200); 189981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com out.fBottom = out.fTop + (GENERATE_EXTENTS / 200); 190981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com return out; 191981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com} 192981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com 193e0e7cfe44bb9d66d76120a79e5275c294bacaa22commit-bot@chromium.orgstatic inline SkIRect make_random_rects(SkRandom& rand, int index, int numRects) { 194981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com SkIRect out; 195981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com out.fLeft = rand.nextS() % GENERATE_EXTENTS; 196981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com out.fTop = rand.nextS() % GENERATE_EXTENTS; 197981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com out.fRight = out.fLeft + 1 + rand.nextU() % (GENERATE_EXTENTS / 5); 198981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com out.fBottom = out.fTop + 1 + rand.nextU() % (GENERATE_EXTENTS / 5); 199981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com return out; 200981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com} 201981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com 202e0e7cfe44bb9d66d76120a79e5275c294bacaa22commit-bot@chromium.orgstatic inline SkIRect make_large_rects(SkRandom& rand, int index, int numRects) { 203981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com SkIRect out; 204981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com out.fLeft = rand.nextU() % GENERATE_EXTENTS; 205981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com out.fTop = rand.nextU() % GENERATE_EXTENTS; 206981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com out.fRight = out.fLeft + (GENERATE_EXTENTS / 3); 207981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com out.fBottom = out.fTop + (GENERATE_EXTENTS / 3); 208981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com return out; 209981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com} 210981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com 211981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com/////////////////////////////////////////////////////////////////////////////// 212981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com 21305af1afd429808913683da75644e48bece12e820humper@google.comstatic inline SkBenchmark* Fact0(void* p) { 2148c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.com return SkNEW_ARGS(BBoxBuildBench, (p, "XYordered", &make_XYordered_rects, false, 215981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com SkRTree::Create(5, 16))); 216981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com} 21705af1afd429808913683da75644e48bece12e820humper@google.comstatic inline SkBenchmark* Fact1(void* p) { 2188c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.com return SkNEW_ARGS(BBoxBuildBench, (p, "XYordered", &make_XYordered_rects, true, 219981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com SkRTree::Create(5, 16))); 220981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com} 22105af1afd429808913683da75644e48bece12e820humper@google.comstatic inline SkBenchmark* Fact2(void* p) { 2228c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.com return SkNEW_ARGS(BBoxBuildBench, (p, "(unsorted)XYordered", &make_XYordered_rects, true, 2238c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.com SkRTree::Create(5, 16, 1, false))); 224981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com} 22505af1afd429808913683da75644e48bece12e820humper@google.comstatic inline SkBenchmark* Fact3(void* p) { 2268c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.com return SkNEW_ARGS(BBoxQueryBench, (p, "XYordered", &make_XYordered_rects, true, 227981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com BBoxQueryBench::kRandom_QueryType, SkRTree::Create(5, 16))); 228981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com} 22905af1afd429808913683da75644e48bece12e820humper@google.comstatic inline SkBenchmark* Fact4(void* p) { 2308c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.com return SkNEW_ARGS(BBoxQueryBench, (p, "(unsorted)XYordered", &make_XYordered_rects, true, 2318c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.com BBoxQueryBench::kRandom_QueryType, SkRTree::Create(5, 16, 1, false))); 2328c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.com} 2338c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.com 2348c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.comstatic inline SkBenchmark* Fact5(void* p) { 2358c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.com return SkNEW_ARGS(BBoxBuildBench, (p, "YXordered", &make_YXordered_rects, false, 2368c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.com SkRTree::Create(5, 16))); 2378c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.com} 2388c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.comstatic inline SkBenchmark* Fact6(void* p) { 2398c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.com return SkNEW_ARGS(BBoxBuildBench, (p, "YXordered", &make_YXordered_rects, true, 2408c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.com SkRTree::Create(5, 16))); 2418c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.com} 2428c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.comstatic inline SkBenchmark* Fact7(void* p) { 2438c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.com return SkNEW_ARGS(BBoxBuildBench, (p, "(unsorted)YXordered", &make_YXordered_rects, true, 2448c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.com SkRTree::Create(5, 16, 1, false))); 2458c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.com} 2468c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.comstatic inline SkBenchmark* Fact8(void* p) { 2478c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.com return SkNEW_ARGS(BBoxQueryBench, (p, "YXordered", &make_YXordered_rects, true, 248981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com BBoxQueryBench::kRandom_QueryType, SkRTree::Create(5, 16))); 249981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com} 2508c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.comstatic inline SkBenchmark* Fact9(void* p) { 2518c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.com return SkNEW_ARGS(BBoxQueryBench, (p, "(unsorted)YXordered", &make_YXordered_rects, true, 2528c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.com BBoxQueryBench::kRandom_QueryType, SkRTree::Create(5, 16, 1, false))); 2538c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.com} 254981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.com 2558c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.comstatic inline SkBenchmark* Fact10(void* p) { 2568c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.com return SkNEW_ARGS(BBoxBuildBench, (p, "random", &make_random_rects, false, 2578c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.com SkRTree::Create(5, 16))); 2588c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.com} 2598c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.comstatic inline SkBenchmark* Fact11(void* p) { 2608c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.com return SkNEW_ARGS(BBoxBuildBench, (p, "random", &make_random_rects, true, 2618c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.com SkRTree::Create(5, 16))); 2628c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.com} 2638c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.comstatic inline SkBenchmark* Fact12(void* p) { 2648c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.com return SkNEW_ARGS(BBoxBuildBench, (p, "(unsorted)random", &make_random_rects, true, 2658c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.com SkRTree::Create(5, 16, 1, false))); 2668c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.com} 2678c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.comstatic inline SkBenchmark* Fact13(void* p) { 2688c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.com return SkNEW_ARGS(BBoxQueryBench, (p, "random", &make_random_rects, true, 2698c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.com BBoxQueryBench::kRandom_QueryType, SkRTree::Create(5, 16))); 2708c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.com} 2718c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.comstatic inline SkBenchmark* Fact14(void* p) { 2728c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.com return SkNEW_ARGS(BBoxQueryBench, (p, "(unsorted)random", &make_random_rects, true, 2738c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.com BBoxQueryBench::kRandom_QueryType, SkRTree::Create(5, 16, 1, false))); 2748c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.com} 2758c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.com 2768c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.comstatic inline SkBenchmark* Fact15(void* p) { 2778c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.com return SkNEW_ARGS(BBoxBuildBench, (p, "concentric", 2788c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.com &make_concentric_rects_increasing, true, SkRTree::Create(5, 16))); 2798c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.com} 2808c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.comstatic inline SkBenchmark* Fact16(void* p) { 2818c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.com return SkNEW_ARGS(BBoxBuildBench, (p, "(unsorted)concentric", 2828c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.com &make_concentric_rects_increasing, true, SkRTree::Create(5, 16, 1, false))); 2838c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.com} 2848c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.comstatic inline SkBenchmark* Fact17(void* p) { 2858c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.com return SkNEW_ARGS(BBoxQueryBench, (p, "concentric", &make_concentric_rects_increasing, true, 2868c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.com BBoxQueryBench::kRandom_QueryType, SkRTree::Create(5, 16))); 2878c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.com} 2888c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.comstatic inline SkBenchmark* Fact18(void* p) { 2898c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.com return SkNEW_ARGS(BBoxQueryBench, (p, "(unsorted)concentric", &make_concentric_rects_increasing, true, 2908c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.com BBoxQueryBench::kRandom_QueryType, SkRTree::Create(5, 16, 1, false))); 2918c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.com} 2928c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.com 2938c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.comstatic BenchRegistry gReg18(Fact18); 2948c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.comstatic BenchRegistry gReg17(Fact17); 2958c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.comstatic BenchRegistry gReg16(Fact16); 2968c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.comstatic BenchRegistry gReg15(Fact15); 2978c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.comstatic BenchRegistry gReg14(Fact14); 2988c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.comstatic BenchRegistry gReg13(Fact13); 2998c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.comstatic BenchRegistry gReg12(Fact12); 3008c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.comstatic BenchRegistry gReg11(Fact11); 3018c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.comstatic BenchRegistry gReg10(Fact10); 3028c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.comstatic BenchRegistry gReg9(Fact9); 3038c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.comstatic BenchRegistry gReg8(Fact8); 3048c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.comstatic BenchRegistry gReg7(Fact7); 3058c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.comstatic BenchRegistry gReg6(Fact6); 3068c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.comstatic BenchRegistry gReg5(Fact5); 307981b33abc65d968523d78d45e69cb071e8e03e91rileya@google.comstatic BenchRegistry gReg4(Fact4); 3088c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.comstatic BenchRegistry gReg3(Fact3); 3098c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.comstatic BenchRegistry gReg2(Fact2); 3108c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.comstatic BenchRegistry gReg1(Fact1); 3118c902126a90f37b6a038a78488c6215fa0c34b7dsglez@google.comstatic BenchRegistry gReg0(Fact0); 312