From 8010632f2408ce9d840c1dcd26a8be0e4967233e Mon Sep 17 00:00:00 2001 From: reed Date: Mon, 23 Mar 2015 08:15:14 -0700 Subject: remove meaningless matrix benches, add mapPts() and add new benches mapPts definitely faster than mapPoints (identity and perspective same speed). Up to 3x for large values of N. cloned from https://codereview.chromium.org/1031443002/ BUG=skia: Review URL: https://codereview.chromium.org/1030653002 --- tests/MatrixTest.cpp | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) (limited to 'tests/MatrixTest.cpp') diff --git a/tests/MatrixTest.cpp b/tests/MatrixTest.cpp index 95d33acabd..35306b3275 100644 --- a/tests/MatrixTest.cpp +++ b/tests/MatrixTest.cpp @@ -799,6 +799,48 @@ static void test_decompScale(skiatest::Reporter* reporter) { REPORTER_ASSERT(reporter, !check_decompScale(m)); } +static void test_mappts(skiatest::Reporter* reporter, const SkMatrix& m, const char type[], int n) { + const int MAX = 100; + SkPoint src[MAX]; + SkPoint dst0[MAX], dst1[MAX]; + SkASSERT(n <= MAX); + + SkRandom rand; + for (int i = 0; i < n; ++i) { + src[i].fX = rand.nextSScalar1() * 100; + src[i].fY = rand.nextSScalar1() * 100; + } + + m.mapPoints(dst0, src, n); + m.mapPts( dst1, src, n); + for (int i = 0; i < n; ++i) { + bool eq = SkScalarNearlyEqual(dst0[i].fX, dst1[i].fX) && + SkScalarNearlyEqual(dst0[i].fY, dst1[i].fY); + if (!eq) { + SkDebugf("%s [%d] points (%g %g) pts (%g %g)\n", type, i, dst0[i].fX, dst0[i].fY, dst1[i].fX, dst1[i].fY); + REPORTER_ASSERT(reporter, eq); + } + } +} + +static void test_mappts(skiatest::Reporter* reporter) { + const int counts[] = { 0, 1, 2, 3, 4, 100 }; + for (size_t i = 0; i < SK_ARRAY_COUNT(counts); ++i) { + const int n = counts[i]; + SkMatrix m; + m.reset(); + test_mappts(reporter, m, "ident", n); + m.setTranslate(2, 3); + test_mappts(reporter, m, "trans", n); + m.postScale(2, 0.5f); + test_mappts(reporter, m, "scale", n); + m.postRotate(35); + test_mappts(reporter, m, "affine", n); + m.setPerspX(0.1f); + test_mappts(reporter, m, "persp", n); + } +} + DEF_TEST(Matrix, reporter) { SkMatrix mat, inverse, iden1, iden2; @@ -919,6 +961,8 @@ DEF_TEST(Matrix, reporter) { test_set9(reporter); test_decompScale(reporter); + + test_mappts(reporter); } DEF_TEST(Matrix_Concat, r) { -- cgit v1.2.3