aboutsummaryrefslogtreecommitdiffhomepage
path: root/bench/Matrix44Bench.cpp
diff options
context:
space:
mode:
authorGravatar mtklein <mtklein@chromium.org>2015-06-09 04:44:07 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2015-06-09 04:44:07 -0700
commitc6c6a91ff2356163d9abf9233ff0f025738940f8 (patch)
treefae2a45035053fe0fd32ade7bef208f59526de0c /bench/Matrix44Bench.cpp
parentb3f0ec9f9967da2f80f0d842cb7fd53617b48de3 (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.cpp24
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(); )