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 "SkMatrix.h" | 9 #include "SkMatrix.h" |
10 #include "SkMatrixUtils.h" | 10 #include "SkMatrixUtils.h" |
(...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
271 static SkMatrix make_scale() { SkMatrix m(make_trans()); m.postScale(1.5f, 0.5f)
; return m; } | 271 static SkMatrix make_scale() { SkMatrix m(make_trans()); m.postScale(1.5f, 0.5f)
; return m; } |
272 static SkMatrix make_afine() { SkMatrix m(make_trans()); m.postRotate(15); retur
n m; } | 272 static SkMatrix make_afine() { SkMatrix m(make_trans()); m.postRotate(15); retur
n m; } |
273 | 273 |
274 class MapPointsMatrixBench : public MatrixBench { | 274 class MapPointsMatrixBench : public MatrixBench { |
275 protected: | 275 protected: |
276 SkMatrix fM; | 276 SkMatrix fM; |
277 enum { | 277 enum { |
278 N = 32 | 278 N = 32 |
279 }; | 279 }; |
280 SkPoint fSrc[N], fDst[N]; | 280 SkPoint fSrc[N], fDst[N]; |
281 const bool fNewWay; | |
282 public: | 281 public: |
283 MapPointsMatrixBench(const char name[], const SkMatrix& m, bool newWay) | 282 MapPointsMatrixBench(const char name[], const SkMatrix& m) |
284 : MatrixBench(name), fM(m), fNewWay(newWay) | 283 : MatrixBench(name), fM(m) |
285 { | 284 { |
286 SkRandom rand; | 285 SkRandom rand; |
287 for (int i = 0; i < N; ++i) { | 286 for (int i = 0; i < N; ++i) { |
288 fSrc[i].set(rand.nextSScalar1(), rand.nextSScalar1()); | 287 fSrc[i].set(rand.nextSScalar1(), rand.nextSScalar1()); |
289 } | 288 } |
290 } | 289 } |
291 | 290 |
292 void performTest() override { | 291 void performTest() override { |
293 if (fNewWay) { | 292 for (int i = 0; i < 1000000; ++i) { |
294 for (int i = 0; i < 1000000; ++i) { | 293 fM.mapPoints(fDst, fSrc, N); |
295 fM.mapPts(fDst, fSrc, N); | |
296 } | |
297 } else { | |
298 for (int i = 0; i < 1000000; ++i) { | |
299 fM.mapPoints(fDst, fSrc, N); | |
300 } | |
301 } | 294 } |
302 } | 295 } |
303 }; | 296 }; |
304 DEF_BENCH( return new MapPointsMatrixBench("mappts_trans0", make_trans(), false)
; ) | 297 DEF_BENCH( return new MapPointsMatrixBench("mappoints_identity", SkMatrix::I());
) |
305 DEF_BENCH( return new MapPointsMatrixBench("mappts_trans1", make_trans(), true);
) | 298 DEF_BENCH( return new MapPointsMatrixBench("mappoints_trans", make_trans()); ) |
306 DEF_BENCH( return new MapPointsMatrixBench("mappts_scale0", make_scale(), false)
; ) | 299 DEF_BENCH( return new MapPointsMatrixBench("mappoints_scale", make_scale()); ) |
307 DEF_BENCH( return new MapPointsMatrixBench("mappts_scale1", make_scale(), true);
) | 300 DEF_BENCH( return new MapPointsMatrixBench("mappoints_affine", make_afine()); ) |
308 DEF_BENCH( return new MapPointsMatrixBench("mappts_afine0", make_afine(), false)
; ) | |
309 DEF_BENCH( return new MapPointsMatrixBench("mappts_afine1", make_afine(), true);
) | |
310 | 301 |
OLD | NEW |