2 * Copyright 2014 Google Inc.
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
13 #include "GrOrderedSet.h"
15 static const int NUM_ELEMENTS = 1000;
17 // Time how long it takes to build a set
18 class GrOrderedSetBuildBench : public Benchmark {
20 GrOrderedSetBuildBench() {
21 fName.append("ordered_set_build");
24 bool isSuitableFor(Backend backend) SK_OVERRIDE {
25 return kNonRendering_Backend == backend;
28 virtual ~GrOrderedSetBuildBench() {}
31 const char* onGetName() SK_OVERRIDE {
35 void onPreDraw() SK_OVERRIDE {
37 for (int j = 0; j < NUM_ELEMENTS; ++j) {
38 fData[j] = rand.nextU() % NUM_ELEMENTS;
42 void onDraw(const int loops, SkCanvas* canvas) SK_OVERRIDE {
43 for (int i = 0; i < loops; ++i) {
44 GrOrderedSet<int> set;
45 for (int j = 0; j < NUM_ELEMENTS; ++j) {
54 int fData[NUM_ELEMENTS];
55 typedef Benchmark INHERITED;
58 // Time how long it takes to find elements in a set
59 class GrOrderedSetFindBench : public Benchmark {
61 GrOrderedSetFindBench() {
62 fName.append("ordered_set_find");
65 bool isSuitableFor(Backend backend) SK_OVERRIDE {
66 return kNonRendering_Backend == backend;
69 virtual ~GrOrderedSetFindBench() {}
72 const char* onGetName() SK_OVERRIDE {
76 void onPreDraw() SK_OVERRIDE {
78 for (int j = 0; j < NUM_ELEMENTS; ++j) {
79 fData[j] = rand.nextU() % 1500;
80 fSet.insert(rand.nextU() % NUM_ELEMENTS);
84 void onDraw(const int loops, SkCanvas* canvas) SK_OVERRIDE {
85 for (int i = 0; i < loops; ++i) {
86 for (int j = 0; j < NUM_ELEMENTS; ++j) {
94 int fData[NUM_ELEMENTS];
95 GrOrderedSet<int> fSet;
96 typedef Benchmark INHERITED;
99 // Time how long it takes to iterate over and remove all elements from set
100 class GrOrderedSetRemoveBench : public Benchmark {
102 GrOrderedSetRemoveBench() {
103 fName.append("ordered_set_remove");
106 bool isSuitableFor(Backend backend) SK_OVERRIDE {
107 return kNonRendering_Backend == backend;
110 virtual ~GrOrderedSetRemoveBench() {}
113 const char* onGetName() SK_OVERRIDE {
114 return fName.c_str();
117 void onPreDraw() SK_OVERRIDE {
119 for (int j = 0; j < NUM_ELEMENTS; ++j) {
120 fSet.insert(rand.nextU() % NUM_ELEMENTS);
124 void onDraw(const int loops, SkCanvas* canvas) SK_OVERRIDE {
125 typedef GrOrderedSet<int>::Iter SetIter;
126 for (int i = 0; i < loops; ++i) {
127 GrOrderedSet<int> testSet;
128 for (SetIter s = fSet.begin(); fSet.end() != s; ++s) {
131 for (int j = 0; j < NUM_ELEMENTS; ++j) {
132 testSet.remove(testSet.find(j));
139 GrOrderedSet<int> fSet;
140 typedef Benchmark INHERITED;
143 ///////////////////////////////////////////////////////////////////////////////
145 DEF_BENCH(return SkNEW_ARGS(GrOrderedSetBuildBench, ());)
146 DEF_BENCH(return SkNEW_ARGS(GrOrderedSetFindBench, ());)
147 DEF_BENCH(return SkNEW_ARGS(GrOrderedSetRemoveBench, ());)