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 |