From c6c6a91ff2356163d9abf9233ff0f025738940f8 Mon Sep 17 00:00:00 2001 From: mtklein Date: Tue, 9 Jun 2015 04:44:07 -0700 Subject: 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 --- bench/Matrix44Bench.cpp | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) (limited to 'bench/Matrix44Bench.cpp') 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(); ) -- cgit v1.2.3