| OLD | NEW |
| 1 | 1 |
| 2 /* | 2 /* |
| 3 * Copyright 2011 Google Inc. | 3 * Copyright 2011 Google Inc. |
| 4 * | 4 * |
| 5 * Use of this source code is governed by a BSD-style license that can be | 5 * Use of this source code is governed by a BSD-style license that can be |
| 6 * found in the LICENSE file. | 6 * found in the LICENSE file. |
| 7 */ | 7 */ |
| 8 #include "Benchmark.h" | 8 #include "Benchmark.h" |
| 9 #include "SkRandom.h" | 9 #include "SkRandom.h" |
| 10 #include "SkRegion.h" | 10 #include "SkRegion.h" |
| (...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 110 Proc proc = fProc; | 110 Proc proc = fProc; |
| 111 for (int i = 0; i < loops; ++i) { | 111 for (int i = 0; i < loops; ++i) { |
| 112 proc(fA, fB); | 112 proc(fA, fB); |
| 113 } | 113 } |
| 114 } | 114 } |
| 115 | 115 |
| 116 private: | 116 private: |
| 117 typedef Benchmark INHERITED; | 117 typedef Benchmark INHERITED; |
| 118 }; | 118 }; |
| 119 | 119 |
| 120 class RectSectBench : public Benchmark { | |
| 121 enum { | |
| 122 N = 1000 | |
| 123 }; | |
| 124 SkRect fArray0[N]; | |
| 125 SkRect fArray1[N]; | |
| 126 SkString fName; | |
| 127 bool fNewWay; | |
| 128 | |
| 129 public: | |
| 130 static void RandRect(SkRect* r, SkRandom& rand) { | |
| 131 r->set(rand.nextSScalar1(), rand.nextSScalar1(), | |
| 132 rand.nextSScalar1(), rand.nextSScalar1()); | |
| 133 r->sort(); | |
| 134 } | |
| 135 | |
| 136 RectSectBench(bool newWay) : fNewWay(newWay) { | |
| 137 fName.printf("rect_intersect_%s", newWay ? "new" : "old"); | |
| 138 | |
| 139 SkRandom rand; | |
| 140 for (int i = 0; i < N; i++) { | |
| 141 RandRect(&fArray0[i], rand); | |
| 142 RandRect(&fArray1[i], rand); | |
| 143 } | |
| 144 } | |
| 145 | |
| 146 virtual bool isSuitableFor(Backend backend) SK_OVERRIDE { | |
| 147 return backend == kNonRendering_Backend; | |
| 148 } | |
| 149 | |
| 150 protected: | |
| 151 virtual const char* onGetName() { return fName.c_str(); } | |
| 152 | |
| 153 virtual void onDraw(const int loops, SkCanvas* canvas) { | |
| 154 for (int i = 0; i < loops; ++i) { | |
| 155 if (fNewWay) { | |
| 156 for (int j = 0; j < N; ++j) { | |
| 157 SkRect r = fArray0[j]; | |
| 158 r.intersect2(fArray1[j]); | |
| 159 } | |
| 160 } else { | |
| 161 for (int j = 0; j < N; ++j) { | |
| 162 SkRect r = fArray0[j]; | |
| 163 r.intersect(fArray1[j]); | |
| 164 } | |
| 165 } | |
| 166 } | |
| 167 } | |
| 168 | |
| 169 private: | |
| 170 typedef Benchmark INHERITED; | |
| 171 }; | |
| 172 | |
| 173 /////////////////////////////////////////////////////////////////////////////// | 120 /////////////////////////////////////////////////////////////////////////////// |
| 174 | 121 |
| 175 #define SMALL 16 | 122 #define SMALL 16 |
| 176 | 123 |
| 177 DEF_BENCH( return SkNEW_ARGS(RegionBench, (SMALL, union_proc, "union")); ) | 124 DEF_BENCH( return SkNEW_ARGS(RegionBench, (SMALL, union_proc, "union")); ) |
| 178 DEF_BENCH( return SkNEW_ARGS(RegionBench, (SMALL, sect_proc, "intersect")); ) | 125 DEF_BENCH( return SkNEW_ARGS(RegionBench, (SMALL, sect_proc, "intersect")); ) |
| 179 DEF_BENCH( return SkNEW_ARGS(RegionBench, (SMALL, diff_proc, "difference")); ) | 126 DEF_BENCH( return SkNEW_ARGS(RegionBench, (SMALL, diff_proc, "difference")); ) |
| 180 DEF_BENCH( return SkNEW_ARGS(RegionBench, (SMALL, diffrect_proc, "differencerect
")); ) | 127 DEF_BENCH( return SkNEW_ARGS(RegionBench, (SMALL, diffrect_proc, "differencerect
")); ) |
| 181 DEF_BENCH( return SkNEW_ARGS(RegionBench, (SMALL, diffrectbig_proc, "differencer
ectbig")); ) | 128 DEF_BENCH( return SkNEW_ARGS(RegionBench, (SMALL, diffrectbig_proc, "differencer
ectbig")); ) |
| 182 DEF_BENCH( return SkNEW_ARGS(RegionBench, (SMALL, containsrect_proc, "containsre
ct")); ) | 129 DEF_BENCH( return SkNEW_ARGS(RegionBench, (SMALL, containsrect_proc, "containsre
ct")); ) |
| 183 DEF_BENCH( return SkNEW_ARGS(RegionBench, (SMALL, sectsrgn_proc, "intersectsrgn"
)); ) | 130 DEF_BENCH( return SkNEW_ARGS(RegionBench, (SMALL, sectsrgn_proc, "intersectsrgn"
)); ) |
| 184 DEF_BENCH( return SkNEW_ARGS(RegionBench, (SMALL, sectsrect_proc, "intersectsrec
t")); ) | 131 DEF_BENCH( return SkNEW_ARGS(RegionBench, (SMALL, sectsrect_proc, "intersectsrec
t")); ) |
| 185 DEF_BENCH( return SkNEW_ARGS(RegionBench, (SMALL, containsxy_proc, "containsxy")
); ) | 132 DEF_BENCH( return SkNEW_ARGS(RegionBench, (SMALL, containsxy_proc, "containsxy")
); ) |
| 186 | |
| 187 DEF_BENCH( return SkNEW_ARGS(RectSectBench, (false)); ) | |
| 188 DEF_BENCH( return SkNEW_ARGS(RectSectBench, (true)); ) | |
| OLD | NEW |