Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 /* | |
| 2 * Copyright 2014 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 | |
| 8 #include "SkBenchmark.h" | |
| 9 #include "SkCanvas.h" | |
| 10 #include "SkRandom.h" | |
| 11 #include "SkString.h" | |
| 12 #include "GrSet.h" | |
| 13 | |
| 14 static const int NUM_ELEMENTS = 1000; | |
| 15 | |
| 16 // Time how long it takes to build a set | |
| 17 class GrSetBuildBench : public SkBenchmark { | |
| 18 public: | |
| 19 GrSetBuildBench() { | |
| 20 fName.append("grSet_build"); | |
|
bsalomon
2014/02/26 21:56:09
For the names maybe we should use "set_<foo>" rath
| |
| 21 } | |
| 22 | |
| 23 virtual bool isSuitableFor(Backend backend) SK_OVERRIDE { | |
| 24 return kNonRendering_Backend == backend; | |
| 25 } | |
| 26 | |
| 27 virtual ~GrSetBuildBench() {} | |
| 28 | |
| 29 protected: | |
| 30 virtual const char* onGetName() SK_OVERRIDE { | |
| 31 return fName.c_str(); | |
| 32 } | |
| 33 | |
| 34 virtual void onPreDraw() SK_OVERRIDE { | |
| 35 SkRandom rand; | |
| 36 for (int j = 0; j < NUM_ELEMENTS; ++j) { | |
| 37 fData[j] = rand.nextU() % NUM_ELEMENTS; | |
| 38 } | |
| 39 } | |
| 40 | |
| 41 virtual void onDraw(const int loops, SkCanvas* canvas) SK_OVERRIDE { | |
| 42 for (int i = 0; i < loops; ++i) { | |
| 43 GrSet<int> set; | |
| 44 for (int j = 0; j < NUM_ELEMENTS; ++j) { | |
| 45 set.insert(fData[j]); | |
| 46 } | |
| 47 set.reset(); | |
| 48 } | |
| 49 } | |
| 50 | |
| 51 private: | |
| 52 SkString fName; | |
| 53 int fData[NUM_ELEMENTS]; | |
| 54 typedef SkBenchmark INHERITED; | |
| 55 }; | |
| 56 | |
| 57 // Time how long it takes to find elements in a set | |
| 58 class GrSetFindBench : public SkBenchmark { | |
| 59 public: | |
| 60 GrSetFindBench() { | |
| 61 fName.append("grSet_find"); | |
| 62 } | |
| 63 | |
| 64 virtual bool isSuitableFor(Backend backend) SK_OVERRIDE { | |
| 65 return kNonRendering_Backend == backend; | |
| 66 } | |
| 67 | |
| 68 virtual ~GrSetFindBench() {} | |
| 69 | |
| 70 protected: | |
| 71 virtual const char* onGetName() SK_OVERRIDE { | |
| 72 return fName.c_str(); | |
| 73 } | |
| 74 | |
| 75 virtual void onPreDraw() SK_OVERRIDE { | |
| 76 SkRandom rand; | |
| 77 for (int j = 0; j < NUM_ELEMENTS; ++j) { | |
| 78 fData[j] = rand.nextU() % 1500; | |
| 79 fSet.insert(rand.nextU() % NUM_ELEMENTS); | |
| 80 } | |
| 81 } | |
| 82 | |
| 83 virtual void onDraw(const int loops, SkCanvas* canvas) SK_OVERRIDE { | |
| 84 for (int i = 0; i < loops; ++i) { | |
| 85 for (int j = 0; j < NUM_ELEMENTS; ++j) { | |
| 86 fSet.find(fData[j]); | |
| 87 } | |
| 88 } | |
| 89 } | |
| 90 | |
| 91 private: | |
| 92 SkString fName; | |
| 93 int fData[NUM_ELEMENTS]; | |
| 94 GrSet<int> fSet; | |
| 95 typedef SkBenchmark INHERITED; | |
| 96 }; | |
| 97 | |
| 98 // Time how long it takes to iterate over and remove all elements from set | |
| 99 class GrSetRemoveBench : public SkBenchmark { | |
| 100 public: | |
| 101 GrSetRemoveBench() { | |
| 102 fName.append("grSet_remove"); | |
| 103 } | |
| 104 | |
| 105 virtual bool isSuitableFor(Backend backend) SK_OVERRIDE { | |
| 106 return kNonRendering_Backend == backend; | |
| 107 } | |
| 108 | |
| 109 virtual ~GrSetRemoveBench() {} | |
| 110 | |
| 111 protected: | |
| 112 virtual const char* onGetName() SK_OVERRIDE { | |
| 113 return fName.c_str(); | |
| 114 } | |
| 115 | |
| 116 virtual void onPreDraw() SK_OVERRIDE { | |
| 117 SkRandom rand; | |
| 118 for (int j = 0; j < NUM_ELEMENTS; ++j) { | |
| 119 fSet.insert(rand.nextU() % NUM_ELEMENTS); | |
| 120 } | |
| 121 } | |
| 122 | |
| 123 virtual void onDraw(const int loops, SkCanvas* canvas) SK_OVERRIDE { | |
| 124 typedef GrSet<int>::Iter SetIter; | |
| 125 for (int i = 0; i < loops; ++i) { | |
| 126 GrSet<int> testSet; | |
| 127 for (SetIter s = fSet.begin(); fSet.end() != s; ++s) { | |
| 128 testSet.insert(*s); | |
| 129 } | |
| 130 for (int j = 0; j < NUM_ELEMENTS; ++j) { | |
| 131 testSet.remove(testSet.find(j)); | |
| 132 } | |
| 133 } | |
| 134 } | |
| 135 | |
| 136 private: | |
| 137 SkString fName; | |
| 138 GrSet<int> fSet; | |
| 139 typedef SkBenchmark INHERITED; | |
| 140 }; | |
| 141 | |
| 142 /////////////////////////////////////////////////////////////////////////////// | |
| 143 | |
| 144 DEF_BENCH(return SkNEW_ARGS(GrSetBuildBench, ());) | |
| 145 DEF_BENCH(return SkNEW_ARGS(GrSetFindBench, ());) | |
| 146 DEF_BENCH(return SkNEW_ARGS(GrSetRemoveBench, ());) | |
| OLD | NEW |