diff options
author | reed <reed@google.com> | 2016-06-30 06:38:54 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-06-30 06:38:54 -0700 |
commit | 47df89ebfd548de2ccd91387e1d7eee418b65f96 (patch) | |
tree | 97ef6df66cec123f559f7feb98dd5942670bf744 /bench/MatrixBench.cpp | |
parent | 501ca7f538f129efd27113e641ad17363920886e (diff) |
speed up maprect for scale+trans case
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2111703002
Review-Url: https://codereview.chromium.org/2111703002
Diffstat (limited to 'bench/MatrixBench.cpp')
-rw-r--r-- | bench/MatrixBench.cpp | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/bench/MatrixBench.cpp b/bench/MatrixBench.cpp index a185fec589..53e7296731 100644 --- a/bench/MatrixBench.cpp +++ b/bench/MatrixBench.cpp @@ -297,3 +297,37 @@ DEF_BENCH( return new MapPointsMatrixBench("mappoints_identity", SkMatrix::I()); DEF_BENCH( return new MapPointsMatrixBench("mappoints_trans", make_trans()); ) DEF_BENCH( return new MapPointsMatrixBench("mappoints_scale", make_scale()); ) DEF_BENCH( return new MapPointsMatrixBench("mappoints_affine", make_afine()); ) + +/////////////////////////////////////////////////////////////////////////////// + +class MapRectMatrixBench : public MatrixBench { + SkMatrix fM; + SkRect fR; + bool fScaleTrans; + + enum { MEGA_LOOP = 1000 * 1000 }; +public: + MapRectMatrixBench(const char name[], bool scale_trans) + : MatrixBench(name), fScaleTrans(scale_trans) + { + fM.setScale(2, 3); + fM.postTranslate(1, 2); + + fR.set(10, 10, 100, 200); + } + + void performTest() override { + SkRect dst; + if (fScaleTrans) { + for (int i = 0; i < MEGA_LOOP; ++i) { + fM.mapRectScaleTranslate(&dst, fR); + } + } else { + for (int i = 0; i < MEGA_LOOP; ++i) { + fM.mapRect(&dst, fR); + } + } + } +}; +DEF_BENCH( return new MapRectMatrixBench("maprect", false); ) +DEF_BENCH( return new MapRectMatrixBench("maprectscaletrans", true); ) |