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>
This commit is contained in:
Mike Reed 2018-12-07 13:32:18 -05:00 committed by Skia Commit-Bot
parent 5761448f5c
commit 646107fe7f

View File

@ -1191,3 +1191,54 @@ DEF_BENCH( return new ConicBench_ComputeError() )
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); )