diff options
author | xidachen <xidachen@chromium.org> | 2016-05-05 13:24:04 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-05-05 13:24:04 -0700 |
commit | 6b27a5e7292d9a18e376f0c229ec62f7b801305a (patch) | |
tree | 90a0e806cc009fe277faacba9382efee856d974b | |
parent | 4e30f27164179d344f0c8efa9a691d1bc9a53e3f (diff) |
Modify LineBench for drawing
Currently we only have benchmark for lines that contains randomly generated
points. This CL modifies the benchmark which adds cases of drawing straight
lines. Also, this CL changes the call from drawPoints() to drawLines()
which measures the performance of line drawing.
BUG=skia:5243
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1936153002
Review-Url: https://codereview.chromium.org/1936153002
-rw-r--r-- | bench/LineBench.cpp | 51 |
1 files changed, 39 insertions, 12 deletions
diff --git a/bench/LineBench.cpp b/bench/LineBench.cpp index 67dc5648be..3127d4efec 100644 --- a/bench/LineBench.cpp +++ b/bench/LineBench.cpp @@ -21,19 +21,33 @@ class LineBench : public Benchmark { bool fDoAA; SkString fName; enum { - PTS = 500, + LINES = 500, }; - SkPoint fPts[PTS]; + SkPoint fStartPts[LINES]; + SkPoint fEndPts[LINES]; public: - LineBench(SkScalar width, bool doAA) { + enum LineType { + SH, // Straight + horizontally + SV, // Straight + vertically + RAND, + }; + LineBench(SkScalar width, bool doAA, LineType type) { fStrokeWidth = width; fDoAA = doAA; - fName.printf("lines_%g_%s", width, doAA ? "AA" : "BW"); + fName.printf("lines_%g_%s_%s", width, doAA ? "AA" : "BW", + type == SH ? "SH" : (type == SV ? "SV" : "RAND")); SkRandom rand; - for (int i = 0; i < PTS; ++i) { - fPts[i].set(rand.nextUScalar1() * 640, rand.nextUScalar1() * 480); + for (int i = 0; i < LINES; ++i) { + fStartPts[i].set(rand.nextUScalar1() * 640, rand.nextUScalar1() * 480); + if (type == SH) { + fEndPts[i].set(rand.nextUScalar1() * 640, fStartPts[i].y()); + } else if (type == SV) { + fEndPts[i].set(fStartPts[i].x(), rand.nextUScalar1() * 480); + } else { + fEndPts[i].set(rand.nextUScalar1() * 640, rand.nextUScalar1() * 480); + } } } @@ -51,7 +65,7 @@ protected: paint.setStrokeWidth(fStrokeWidth); for (int i = 0; i < loops; i++) { - canvas->drawPoints(SkCanvas::kLines_PointMode, PTS, fPts, paint); + canvas->drawLine(fStartPts[i].x(), fStartPts[i].y(), fEndPts[i].x(), fEndPts[i].y(), paint); } } @@ -59,8 +73,21 @@ private: typedef Benchmark INHERITED; }; -DEF_BENCH(return new LineBench(0, false);) -DEF_BENCH(return new LineBench(SK_Scalar1, false);) -DEF_BENCH(return new LineBench(0, true);) -DEF_BENCH(return new LineBench(SK_Scalar1/2, true);) -DEF_BENCH(return new LineBench(SK_Scalar1, true);) +DEF_BENCH(return new LineBench(0, false, LineBench::SH);) +DEF_BENCH(return new LineBench(SK_Scalar1, false, LineBench::SH);) +DEF_BENCH(return new LineBench(0, true, LineBench::SH);) +DEF_BENCH(return new LineBench(SK_Scalar1/2, true, LineBench::SH);) +DEF_BENCH(return new LineBench(SK_Scalar1, true, LineBench::SH);) +DEF_BENCH(return new LineBench(SK_Scalar1*10,true, LineBench::SH);) +DEF_BENCH(return new LineBench(0, false, LineBench::SV);) +DEF_BENCH(return new LineBench(SK_Scalar1, false, LineBench::SV);) +DEF_BENCH(return new LineBench(0, true, LineBench::SV);) +DEF_BENCH(return new LineBench(SK_Scalar1/2, true, LineBench::SV);) +DEF_BENCH(return new LineBench(SK_Scalar1, true, LineBench::SV);) +DEF_BENCH(return new LineBench(SK_Scalar1*10,true, LineBench::SV);) +DEF_BENCH(return new LineBench(0, false, LineBench::RAND);) +DEF_BENCH(return new LineBench(SK_Scalar1, false, LineBench::RAND);) +DEF_BENCH(return new LineBench(0, true, LineBench::RAND);) +DEF_BENCH(return new LineBench(SK_Scalar1/2, true, LineBench::RAND);) +DEF_BENCH(return new LineBench(SK_Scalar1, true, LineBench::RAND);) +DEF_BENCH(return new LineBench(SK_Scalar1*10,true, LineBench::RAND);) |