diff options
author | mtklein <mtklein@chromium.org> | 2015-06-09 04:44:07 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-06-09 04:44:07 -0700 |
commit | c6c6a91ff2356163d9abf9233ff0f025738940f8 (patch) | |
tree | fae2a45035053fe0fd32ade7bef208f59526de0c /bench/Matrix44Bench.cpp | |
parent | b3f0ec9f9967da2f80f0d842cb7fd53617b48de3 (diff) |
Split SetConcatMatrix44Bench to cover both internal paths.
The existing bench only tests the fast path, but we're looking to speed
up the general case. It'd be nice to be able to measure that speedup.
BUG=skia:
Review URL: https://codereview.chromium.org/1146953003
Diffstat (limited to 'bench/Matrix44Bench.cpp')
-rw-r--r-- | bench/Matrix44Bench.cpp | 24 |
1 files changed, 17 insertions, 7 deletions
diff --git a/bench/Matrix44Bench.cpp b/bench/Matrix44Bench.cpp index 5093fd2745..81452b4a3d 100644 --- a/bench/Matrix44Bench.cpp +++ b/bench/Matrix44Bench.cpp @@ -248,15 +248,25 @@ private: class SetConcatMatrix44Bench : public Matrix44Bench { public: - SetConcatMatrix44Bench() - : INHERITED("setconcat") + // SkMatrix44::setConcat() has a fast path for matrices that are at most scale+translate. + SetConcatMatrix44Bench(bool fastPath) + : INHERITED(fastPath ? "setconcat_fast" : "setconcat_general") , fM0(SkMatrix44::kUninitialized_Constructor) , fM1(SkMatrix44::kUninitialized_Constructor) , fM2(SkMatrix44::kUninitialized_Constructor) { - fX = fY = fZ = SkDoubleToMScalar(1.5); - fM1.setScale(fX, fY, fZ); - fM2.setTranslate(fX, fY, fZ); + if (fastPath) { + const SkMScalar v = SkDoubleToMScalar(1.5); + fM1.setScale(v,v,v); + fM2.setTranslate(v,v,v); + } else { + SkRandom rand; + for (int x = 0; x < 4; x++) { + for (int y = 0; y < 4; y++) { + fM1.setFloat(x,y, rand.nextF()); + fM2.setFloat(x,y, rand.nextF()); + }} + } } protected: virtual void performTest() { @@ -267,7 +277,6 @@ protected: } private: SkMatrix44 fM0, fM1, fM2; - SkMScalar fX, fY, fZ; typedef Matrix44Bench INHERITED; }; @@ -300,5 +309,6 @@ DEF_BENCH( return new InvertMatrix44Bench(); ) DEF_BENCH( return new InvertAffineMatrix44Bench(); ) DEF_BENCH( return new InvertScaleTranslateMatrix44Bench(); ) DEF_BENCH( return new InvertTranslateMatrix44Bench(); ) -DEF_BENCH( return new SetConcatMatrix44Bench(); ) +DEF_BENCH( return new SetConcatMatrix44Bench(true); ) +DEF_BENCH( return new SetConcatMatrix44Bench(false); ) DEF_BENCH( return new GetTypeMatrix44Bench(); ) |