Chromium Code Reviews| Index: bench/RTreeBench.cpp |
| diff --git a/bench/RTreeBench.cpp b/bench/RTreeBench.cpp |
| index 030d376017160ae740372e6a39168e46117b1a7a..b221a8172074651987f4e7070092cc17979ad08a 100644 |
| --- a/bench/RTreeBench.cpp |
| +++ b/bench/RTreeBench.cpp |
| @@ -19,12 +19,10 @@ static const int GRID_WIDTH = 100; |
| typedef SkRect (*MakeRectProc)(SkRandom&, int, int); |
| -// Time how long it takes to build an R-Tree either bulk-loaded or not |
| +// Time how long it takes to build an R-Tree. |
| class RTreeBuildBench : public Benchmark { |
| public: |
| - RTreeBuildBench(const char* name, MakeRectProc proc, SkRTree* tree) |
| - : fTree(tree) |
| - , fProc(proc) { |
| + RTreeBuildBench(const char* name, MakeRectProc proc) : fProc(proc) { |
| fName.printf("rtree_%s_build", name); |
| } |
| @@ -32,9 +30,6 @@ public: |
| return backend == kNonRendering_Backend; |
| } |
| - virtual ~RTreeBuildBench() { |
| - fTree->unref(); |
| - } |
| protected: |
| virtual const char* onGetName() SK_OVERRIDE { |
| return fName.c_str(); |
| @@ -47,34 +42,28 @@ protected: |
| } |
| for (int i = 0; i < loops; ++i) { |
| - fTree->insert(&rects, NUM_BUILD_RECTS); |
| + SkRTree tree; |
| + tree.insert(&rects, NUM_BUILD_RECTS); |
| SkASSERT(rects != NULL); // It'd break this bench if the tree took ownership of rects. |
| - fTree->clear(); |
| } |
| } |
| private: |
| - SkRTree* fTree; |
| MakeRectProc fProc; |
| SkString fName; |
| typedef Benchmark INHERITED; |
| }; |
| -// Time how long it takes to perform queries on an R-Tree, bulk-loaded or not |
| +// Time how long it takes to perform queries on an R-Tree. |
| class RTreeQueryBench : public Benchmark { |
| public: |
| - RTreeQueryBench(const char* name, MakeRectProc proc, SkRTree* tree) |
| - : fTree(tree) |
| - , fProc(proc) { |
| + RTreeQueryBench(const char* name, MakeRectProc proc) |
|
robertphillips
2014/11/18 16:02:15
put this on prior line ?
|
| + : fProc(proc) { |
| fName.printf("rtree_%s_query", name); |
| } |
| virtual bool isSuitableFor(Backend backend) SK_OVERRIDE { |
| return backend == kNonRendering_Backend; |
| } |
| - |
| - virtual ~RTreeQueryBench() { |
| - fTree->unref(); |
| - } |
| protected: |
| virtual const char* onGetName() SK_OVERRIDE { |
| return fName.c_str(); |
| @@ -85,7 +74,7 @@ protected: |
| for (int i = 0; i < NUM_QUERY_RECTS; ++i) { |
| rects[i] = fProc(rand, i, NUM_QUERY_RECTS); |
| } |
| - fTree->insert(&rects, NUM_QUERY_RECTS); |
| + fTree.insert(&rects, NUM_QUERY_RECTS); |
| } |
| virtual void onDraw(const int loops, SkCanvas* canvas) SK_OVERRIDE { |
| @@ -97,21 +86,16 @@ protected: |
| query.fTop = rand.nextRangeF(0, GENERATE_EXTENTS); |
| query.fRight = query.fLeft + 1 + rand.nextRangeF(0, GENERATE_EXTENTS/2); |
| query.fBottom = query.fTop + 1 + rand.nextRangeF(0, GENERATE_EXTENTS/2); |
| - fTree->search(query, &hits); |
| + fTree.search(query, &hits); |
| } |
| } |
| private: |
| - SkBBoxHierarchy* fTree; |
| + SkRTree fTree; |
| MakeRectProc fProc; |
| SkString fName; |
| typedef Benchmark INHERITED; |
| }; |
| -static inline SkRect make_concentric_rects_increasing(SkRandom&, int index, int numRects) { |
| - SkRect out = SkRect::MakeWH(SkIntToScalar(index+1), SkIntToScalar(index+1)); |
| - return out; |
| -} |
| - |
| static inline SkRect make_XYordered_rects(SkRandom& rand, int index, int numRects) { |
| SkRect out; |
| out.fLeft = SkIntToScalar(index % GRID_WIDTH); |
| @@ -138,42 +122,18 @@ static inline SkRect make_random_rects(SkRandom& rand, int index, int numRects) |
| return out; |
| } |
| +static inline SkRect make_concentric_rects(SkRandom&, int index, int numRects) { |
| + return SkRect::MakeWH(SkIntToScalar(index+1), SkIntToScalar(index+1)); |
| +} |
| + |
| /////////////////////////////////////////////////////////////////////////////// |
| -DEF_BENCH(return SkNEW_ARGS(RTreeBuildBench, |
| - ("XY_sorted", &make_XYordered_rects, SkRTree::Create(5, 16)));) |
| -DEF_BENCH(return SkNEW_ARGS(RTreeBuildBench, |
| - ("XY_unsorted", &make_XYordered_rects, SkRTree::Create(5, 16, 1, false)));) |
| -DEF_BENCH(return SkNEW_ARGS(RTreeBuildBench, |
| - ("YX_sorted", &make_YXordered_rects, SkRTree::Create(5, 16)));) |
| -DEF_BENCH(return SkNEW_ARGS(RTreeBuildBench, |
| - ("YX_unsorted", &make_YXordered_rects, SkRTree::Create(5, 16, 1, false)));) |
| -DEF_BENCH(return SkNEW_ARGS(RTreeBuildBench, |
| - ("random_sorted", &make_random_rects, SkRTree::Create(5, 16)));) |
| -DEF_BENCH(return SkNEW_ARGS(RTreeBuildBench, |
| - ("random_unsorted", &make_random_rects, SkRTree::Create(5, 16, 1, false)));) |
| -DEF_BENCH(return SkNEW_ARGS(RTreeBuildBench, |
| - ("concentric_sorted", &make_concentric_rects_increasing, SkRTree::Create(5, 16)));) |
| -DEF_BENCH(return SkNEW_ARGS(RTreeBuildBench, |
| - ("concentric_unsorted", |
| - &make_concentric_rects_increasing, |
| - SkRTree::Create(5, 16, 1, false)));) |
| - |
| -DEF_BENCH(return SkNEW_ARGS(RTreeQueryBench, |
| - ("XY_sorted", &make_XYordered_rects, SkRTree::Create(5, 16)));) |
| -DEF_BENCH(return SkNEW_ARGS(RTreeQueryBench, |
| - ("XY_unsorted", &make_XYordered_rects, SkRTree::Create(5, 16, 1, false)));) |
| -DEF_BENCH(return SkNEW_ARGS(RTreeQueryBench, |
| - ("YX_sorted", &make_YXordered_rects, SkRTree::Create(5, 16)));) |
| -DEF_BENCH(return SkNEW_ARGS(RTreeQueryBench, |
| - ("YX_unsorted", &make_YXordered_rects, SkRTree::Create(5, 16, 1, false)));) |
| -DEF_BENCH(return SkNEW_ARGS(RTreeQueryBench, |
| - ("random_sorted", &make_random_rects, SkRTree::Create(5, 16)));) |
| -DEF_BENCH(return SkNEW_ARGS(RTreeQueryBench, |
| - ("random_unsorted", &make_random_rects, SkRTree::Create(5, 16, 1, false)));) |
| -DEF_BENCH(return SkNEW_ARGS(RTreeQueryBench, |
| - ("concentric_sorted", &make_concentric_rects_increasing, SkRTree::Create(5, 16)));) |
| -DEF_BENCH(return SkNEW_ARGS(RTreeQueryBench, |
| - ("concentric_unsorted", |
| - &make_concentric_rects_increasing, |
| - SkRTree::Create(5, 16, 1, false)));) |
| +DEF_BENCH(return SkNEW_ARGS(RTreeBuildBench, ("XY", &make_XYordered_rects))); |
| +DEF_BENCH(return SkNEW_ARGS(RTreeBuildBench, ("YX", &make_YXordered_rects))); |
| +DEF_BENCH(return SkNEW_ARGS(RTreeBuildBench, ("random", &make_random_rects))); |
| +DEF_BENCH(return SkNEW_ARGS(RTreeBuildBench, ("concentric", &make_concentric_rects))); |
| + |
| +DEF_BENCH(return SkNEW_ARGS(RTreeQueryBench, ("XY", &make_XYordered_rects))); |
| +DEF_BENCH(return SkNEW_ARGS(RTreeQueryBench, ("YX", &make_YXordered_rects))); |
| +DEF_BENCH(return SkNEW_ARGS(RTreeQueryBench, ("random", &make_random_rects))); |
| +DEF_BENCH(return SkNEW_ARGS(RTreeQueryBench, ("concentric", &make_concentric_rects))); |