Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(148)

Side by Side Diff: bench/MatrixBench.cpp

Issue 23596006: Revise SVD code to remove arctangents. (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: Fix matrix_decompose bench to actually check random matrices. Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | src/core/SkMatrix.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 "SkBenchmark.h" 8 #include "SkBenchmark.h"
9 #include "SkMatrix.h" 9 #include "SkMatrix.h"
10 #include "SkMatrixUtils.h"
10 #include "SkRandom.h" 11 #include "SkRandom.h"
11 #include "SkString.h" 12 #include "SkString.h"
12 13
13 class MatrixBench : public SkBenchmark { 14 class MatrixBench : public SkBenchmark {
14 SkString fName; 15 SkString fName;
15 enum { N = 100000 }; 16 enum { N = 100000 };
16 public: 17 public:
17 MatrixBench(void* param, const char name[]) : INHERITED(param) { 18 MatrixBench(void* param, const char name[]) : INHERITED(param) {
18 fName.printf("matrix_%s", name); 19 fName.printf("matrix_%s", name);
19 fIsRendering = false; 20 fIsRendering = false;
(...skipping 318 matching lines...) Expand 10 before | Expand all | Expand 10 after
338 enum { 339 enum {
339 kCount = SkBENCHLOOP(16) 340 kCount = SkBENCHLOOP(16)
340 }; 341 };
341 double fMatrix [9]; 342 double fMatrix [9];
342 SkPoint fSrc [16]; 343 SkPoint fSrc [16];
343 SkPoint fDst [16]; 344 SkPoint fDst [16];
344 SkRandom fRandom; 345 SkRandom fRandom;
345 typedef MatrixBench INHERITED; 346 typedef MatrixBench INHERITED;
346 }; 347 };
347 348
349 class DecomposeMatrixBench : public MatrixBench {
350 public:
351 DecomposeMatrixBench(void* param) : INHERITED(param, "decompose") {}
352
353 protected:
354 virtual void onPreDraw() {
355 for (int i = 0; i < 10; ++i) {
356 SkScalar rot0 = (fRandom.nextBool()) ? fRandom.nextRangeF(-180, 180) : 0.0f;
357 SkScalar sx = fRandom.nextRangeF(-3000.f, 3000.f);
358 SkScalar sy = (fRandom.nextBool()) ? fRandom.nextRangeF(-3000.f, 300 0.f) : sx;
359 SkScalar rot1 = fRandom.nextRangeF(-180, 180);
360 fMatrix[i].setRotate(rot0);
361 fMatrix[i].postScale(sx, sy);
362 fMatrix[i].postRotate(rot1);
363 }
364 }
365 virtual void performTest() {
366 SkPoint rotation1, scale, rotation2;
367 for (int i = 0; i < 10; ++i) {
368 (void) SkDecomposeUpper2x2(fMatrix[i], &rotation1, &scale, &rotation 2);
369 }
370 }
371 private:
372 SkMatrix fMatrix[10];
373 SkMWCRandom fRandom;
374 typedef MatrixBench INHERITED;
375 };
376
348 class InvertMapRectMatrixBench : public MatrixBench { 377 class InvertMapRectMatrixBench : public MatrixBench {
349 public: 378 public:
350 InvertMapRectMatrixBench(void* param, const char* name, int flags) 379 InvertMapRectMatrixBench(void* param, const char* name, int flags)
351 : INHERITED(param, name) 380 : INHERITED(param, name)
352 , fFlags(flags) { 381 , fFlags(flags) {
353 fMatrix.reset(); 382 fMatrix.reset();
354 fIteration = 0; 383 fIteration = 0;
355 if (flags & kScale_Flag) { 384 if (flags & kScale_Flag) {
356 fMatrix.postScale(SkFloatToScalar(1.5f), SkFloatToScalar(2.5f)); 385 fMatrix.postScale(SkFloatToScalar(1.5f), SkFloatToScalar(2.5f));
357 } 386 }
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
401 }; 430 };
402 431
403 /////////////////////////////////////////////////////////////////////////////// 432 ///////////////////////////////////////////////////////////////////////////////
404 433
405 DEF_BENCH( return new EqualsMatrixBench(p); ) 434 DEF_BENCH( return new EqualsMatrixBench(p); )
406 DEF_BENCH( return new ScaleMatrixBench(p); ) 435 DEF_BENCH( return new ScaleMatrixBench(p); )
407 DEF_BENCH( return new FloatConcatMatrixBench(p); ) 436 DEF_BENCH( return new FloatConcatMatrixBench(p); )
408 DEF_BENCH( return new FloatDoubleConcatMatrixBench(p); ) 437 DEF_BENCH( return new FloatDoubleConcatMatrixBench(p); )
409 DEF_BENCH( return new DoubleConcatMatrixBench(p); ) 438 DEF_BENCH( return new DoubleConcatMatrixBench(p); )
410 DEF_BENCH( return new GetTypeMatrixBench(p); ) 439 DEF_BENCH( return new GetTypeMatrixBench(p); )
440 DEF_BENCH( return new DecomposeMatrixBench(p); )
441
411 DEF_BENCH( return new InvertMapRectMatrixBench(p, "invert_maprect_identity", 0); ) 442 DEF_BENCH( return new InvertMapRectMatrixBench(p, "invert_maprect_identity", 0); )
412 443
413 DEF_BENCH(return new InvertMapRectMatrixBench(p, 444 DEF_BENCH(return new InvertMapRectMatrixBench(p,
414 "invert_maprect_rectstaysrect", 445 "invert_maprect_rectstaysrect",
415 InvertMapRectMatrixBench::kScale_Flag | 446 InvertMapRectMatrixBench::kScale_Flag |
416 InvertMapRectMatrixBench::kTranslate_Flag); ) 447 InvertMapRectMatrixBench::kTranslate_Flag); )
417 448
418 DEF_BENCH(return new InvertMapRectMatrixBench(p, 449 DEF_BENCH(return new InvertMapRectMatrixBench(p,
419 "invert_maprect_translate", 450 "invert_maprect_translate",
420 InvertMapRectMatrixBench::kTranslate_Flag); ) 451 InvertMapRectMatrixBench::kTranslate_Flag); )
(...skipping 16 matching lines...) Expand all
437 468
438 DEF_BENCH( return new InvertMapRectMatrixBench(p, 469 DEF_BENCH( return new InvertMapRectMatrixBench(p,
439 "invert_maprect_typemask_nonpersp", 470 "invert_maprect_typemask_nonpersp",
440 InvertMapRectMatrixBench::kUncachedTypeMask_Flag | 471 InvertMapRectMatrixBench::kUncachedTypeMask_Flag |
441 InvertMapRectMatrixBench::kScale_Flag | 472 InvertMapRectMatrixBench::kScale_Flag |
442 InvertMapRectMatrixBench::kRotate_Flag | 473 InvertMapRectMatrixBench::kRotate_Flag |
443 InvertMapRectMatrixBench::kTranslate_Flag); ) 474 InvertMapRectMatrixBench::kTranslate_Flag); )
444 475
445 DEF_BENCH( return new ScaleTransMixedMatrixBench(p); ) 476 DEF_BENCH( return new ScaleTransMixedMatrixBench(p); )
446 DEF_BENCH( return new ScaleTransDoubleMatrixBench(p); ) 477 DEF_BENCH( return new ScaleTransDoubleMatrixBench(p); )
OLDNEW
« no previous file with comments | « no previous file | src/core/SkMatrix.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698