diff options
author | commit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2013-08-20 20:15:24 +0000 |
---|---|---|
committer | commit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2013-08-20 20:15:24 +0000 |
commit | 950457543860eb1c545e0ef8bb2c20e2ddc6196e (patch) | |
tree | b4059a0ec57560ae74fb8462858624c12ab55cd6 /bench/Matrix44Bench.cpp | |
parent | 9b051a375ba6d6b61cea98f35834cd032aaa5347 (diff) |
Add perf benchmarks and more unit tests for matrix inversion
R=jvanverth@google.com, reed@google.com
Author: shawnsingh@chromium.org
Review URL: https://chromiumcodereview.appspot.com/22886010
git-svn-id: http://skia.googlecode.com/svn/trunk@10836 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'bench/Matrix44Bench.cpp')
-rw-r--r-- | bench/Matrix44Bench.cpp | 104 |
1 files changed, 88 insertions, 16 deletions
diff --git a/bench/Matrix44Bench.cpp b/bench/Matrix44Bench.cpp index dd1de59529..7baf82ae4d 100644 --- a/bench/Matrix44Bench.cpp +++ b/bench/Matrix44Bench.cpp @@ -79,22 +79,91 @@ private: class InvertMatrix44Bench : public Matrix44Bench { public: InvertMatrix44Bench(void* param) : INHERITED(param, "invert") { - fM0.set(0, 0, -1.1); - fM0.set(0, 1, 2.1); - fM0.set(0, 2, -3.1); - fM0.set(0, 3, 4.1); - fM0.set(1, 0, 5.1); - fM0.set(1, 1, -6.1); - fM0.set(1, 2, 7.1); - fM0.set(1, 3, 8.1); - fM0.set(2, 0, -9.1); - fM0.set(2, 1, 10.1); - fM0.set(2, 2, 11.1); - fM0.set(2, 3, -12.1); - fM0.set(3, 0, -13.1); - fM0.set(3, 1, 14.1); - fM0.set(3, 2, -15.1); - fM0.set(3, 3, 16.1); + fM0.set(0, 0, -1.1); + fM0.set(0, 1, 2.1); + fM0.set(0, 2, -3.1); + fM0.set(0, 3, 4.1); + fM0.set(1, 0, 5.1); + fM0.set(1, 1, -6.1); + fM0.set(1, 2, 7.1); + fM0.set(1, 3, 8.1); + fM0.set(2, 0, -9.1); + fM0.set(2, 1, 10.1); + fM0.set(2, 2, 11.1); + fM0.set(2, 3, -12.1); + fM0.set(3, 0, -13.1); + fM0.set(3, 1, 14.1); + fM0.set(3, 2, -15.1); + fM0.set(3, 3, 16.1); + } +protected: + virtual void performTest() { + for (int i = 0; i < 10; ++i) { + fM0.invert(&fM1); + } + } +private: + SkMatrix44 fM0, fM1; + typedef Matrix44Bench INHERITED; +}; + +class InvertAffineMatrix44Bench : public Matrix44Bench { +public: + InvertAffineMatrix44Bench(void* param) : INHERITED(param, "invertaffine") { + fM0.set(0, 0, -1.1); + fM0.set(0, 1, 2.1); + fM0.set(0, 2, -3.1); + fM0.set(0, 3, 4.1); + fM0.set(1, 0, 5.1); + fM0.set(1, 1, -6.1); + fM0.set(1, 2, 7.1); + fM0.set(1, 3, 8.1); + fM0.set(2, 0, -9.1); + fM0.set(2, 1, 10.1); + fM0.set(2, 2, 11.1); + fM0.set(2, 3, -12.1); + // bottom row (perspective component) remains (0, 0, 0, 1). + } +protected: + virtual void performTest() { + for (int i = 0; i < 10; ++i) { + fM0.invert(&fM1); + } + } +private: + SkMatrix44 fM0, fM1; + typedef Matrix44Bench INHERITED; +}; + +class InvertScaleTranslateMatrix44Bench : public Matrix44Bench { +public: + InvertScaleTranslateMatrix44Bench(void* param) : INHERITED(param, "invertscaletranslate") { + fM0.set(0, 0, -1.1); + fM0.set(0, 3, 4.1); + + fM0.set(1, 1, -6.1); + fM0.set(1, 3, 8.1); + + fM0.set(2, 2, 11.1); + fM0.set(2, 3, -12.1); + } +protected: + virtual void performTest() { + for (int i = 0; i < 10; ++i) { + fM0.invert(&fM1); + } + } +private: + SkMatrix44 fM0, fM1; + typedef Matrix44Bench INHERITED; +}; + +class InvertTranslateMatrix44Bench : public Matrix44Bench { +public: + InvertTranslateMatrix44Bench(void* param) : INHERITED(param, "inverttranslate") { + fM0.set(0, 3, 4.1); + fM0.set(1, 3, 8.1); + fM0.set(2, 3, -12.1); } protected: virtual void performTest() { @@ -167,5 +236,8 @@ DEF_BENCH( return new EqualsMatrix44Bench(p); ) DEF_BENCH( return new PreScaleMatrix44Bench(p); ) DEF_BENCH( return new PostScaleMatrix44Bench(p); ) DEF_BENCH( return new InvertMatrix44Bench(p); ) +DEF_BENCH( return new InvertAffineMatrix44Bench(p); ) +DEF_BENCH( return new InvertScaleTranslateMatrix44Bench(p); ) +DEF_BENCH( return new InvertTranslateMatrix44Bench(p); ) DEF_BENCH( return new SetConcatMatrix44Bench(p); ) DEF_BENCH( return new GetTypeMatrix44Bench(p); ) |