add bench to time relative gain for convexity
Bug: skia:
Change-Id: I5bd0194a49c74a8e47a210ff06ef4406ecb3bc4c
Reviewed-on: https://skia-review.googlesource.com/c/175585
Commit-Queue: Mike Reed <reed@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
diff --git a/bench/PathBench.cpp b/bench/PathBench.cpp
index 6ceb1cf..b065c0c 100644
--- a/bench/PathBench.cpp
+++ b/bench/PathBench.cpp
@@ -1191,3 +1191,54 @@
DEF_BENCH( return new ConicBench_asQuadTol() )
DEF_BENCH( return new ConicBench_quadPow2() )
*/
+
+class CommonConvexBench : public Benchmark {
+protected:
+ SkString fName;
+ SkPath fPath;
+ const bool fAA;
+
+public:
+ CommonConvexBench(int w, int h, bool forceConcave, bool aa) : fAA(aa) {
+ fName.printf("convex_path_%d_%d_%d_%d", w, h, forceConcave, aa);
+
+ SkRect r = SkRect::MakeXYWH(10, 10, w*1.0f, h*1.0f);
+ fPath.addRRect(SkRRect::MakeRectXY(r, w/8.0f, h/8.0f));
+
+ if (forceConcave) {
+ fPath.setConvexity(SkPath::kConcave_Convexity);
+ SkASSERT(!fPath.isConvex());
+ } else {
+ SkASSERT(fPath.isConvex());
+ }
+ }
+
+protected:
+ const char* onGetName() override {
+ return fName.c_str();
+ }
+
+ void onDraw(int loops, SkCanvas* canvas) override {
+ SkPaint paint;
+ paint.setAntiAlias(fAA);
+
+ for (int i = 0; i < loops; ++i) {
+ for (int inner = 0; inner < 100; ++inner) {
+ canvas->drawPath(fPath, paint);
+ }
+ }
+ }
+
+private:
+ typedef Benchmark INHERITED;
+};
+
+DEF_BENCH( return new CommonConvexBench( 16, 16, false, false); )
+DEF_BENCH( return new CommonConvexBench( 16, 16, true, false); )
+DEF_BENCH( return new CommonConvexBench( 16, 16, false, true); )
+DEF_BENCH( return new CommonConvexBench( 16, 16, true, true); )
+
+DEF_BENCH( return new CommonConvexBench(200, 16, false, false); )
+DEF_BENCH( return new CommonConvexBench(200, 16, true, false); )
+DEF_BENCH( return new CommonConvexBench(200, 16, false, true); )
+DEF_BENCH( return new CommonConvexBench(200, 16, true, true); )