Index: bench/GeometryBench.cpp |
diff --git a/bench/GeometryBench.cpp b/bench/GeometryBench.cpp |
index 1d8575735f76ab64264b76bf4645f73883eb59d8..24d5c34620d154dd64f6e5bbbcbf6ede9471dcfc 100644 |
--- a/bench/GeometryBench.cpp |
+++ b/bench/GeometryBench.cpp |
@@ -132,46 +132,115 @@ DEF_BENCH( return new GeoRectBench_sort; ) |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
-class EvalQuadAt0 : public GeometryBench { |
+class QuadBenchBase : public GeometryBench { |
+protected: |
SkPoint fPts[3]; |
public: |
- EvalQuadAt0() : GeometryBench("evalquadat0") { |
+ QuadBenchBase(const char name[]) : GeometryBench(name) { |
SkRandom rand; |
for (int i = 0; i < 3; ++i) { |
fPts[i].set(rand.nextUScalar1(), rand.nextUScalar1()); |
} |
} |
- |
+}; |
+ |
+class EvalQuadAt0 : public QuadBenchBase { |
+public: |
+ EvalQuadAt0() : QuadBenchBase("evalquadat0") {} |
protected: |
void onDraw(const int loops, SkCanvas* canvas) SK_OVERRIDE { |
SkPoint result; |
for (int outer = 0; outer < loops; ++outer) { |
- for (int i = 0; i < 10000; ++i) { |
- SkEvalQuadAt(fPts, 0.5f, &result); |
- } |
+ SkEvalQuadAt(fPts, 0.5f, &result); |
+ SkEvalQuadAt(fPts, 0.5f, &result); |
+ SkEvalQuadAt(fPts, 0.5f, &result); |
+ SkEvalQuadAt(fPts, 0.5f, &result); |
} |
} |
}; |
DEF_BENCH( return new EvalQuadAt0; ) |
-class EvalQuadAt1 : public GeometryBench { |
- SkPoint fPts[3]; |
+class EvalQuadAt1 : public QuadBenchBase { |
public: |
- EvalQuadAt1() : GeometryBench("evalquadat1") { |
- SkRandom rand; |
- for (int i = 0; i < 3; ++i) { |
- fPts[i].set(rand.nextUScalar1(), rand.nextUScalar1()); |
+ EvalQuadAt1() : QuadBenchBase("evalquadat1") {} |
+protected: |
+ void onDraw(const int loops, SkCanvas* canvas) SK_OVERRIDE { |
+ SkPoint result; |
+ for (int outer = 0; outer < loops; ++outer) { |
+ result = SkEvalQuadAt(fPts, 0.5f); |
+ result = SkEvalQuadAt(fPts, 0.5f); |
+ result = SkEvalQuadAt(fPts, 0.5f); |
+ result = SkEvalQuadAt(fPts, 0.5f); |
} |
} |
- |
+}; |
+DEF_BENCH( return new EvalQuadAt1; ) |
+ |
+//////// |
+ |
+class EvalQuadTangentAt0 : public QuadBenchBase { |
+public: |
+ EvalQuadTangentAt0() : QuadBenchBase("evalquadtangentat0") {} |
protected: |
void onDraw(const int loops, SkCanvas* canvas) SK_OVERRIDE { |
+ SkPoint result; |
for (int outer = 0; outer < loops; ++outer) { |
- for (int i = 0; i < 10000; ++i) { |
- SkEvalQuadAt(fPts, 0.5f); |
- } |
+ SkEvalQuadAt(fPts, 0.5f, NULL, &result); |
+ SkEvalQuadAt(fPts, 0.5f, NULL, &result); |
+ SkEvalQuadAt(fPts, 0.5f, NULL, &result); |
+ SkEvalQuadAt(fPts, 0.5f, NULL, &result); |
} |
} |
}; |
-DEF_BENCH( return new EvalQuadAt1; ) |
+DEF_BENCH( return new EvalQuadTangentAt0; ) |
+ |
+class EvalQuadTangentAt1 : public QuadBenchBase { |
+public: |
+ EvalQuadTangentAt1() : QuadBenchBase("evalquadtangentat1") {} |
+protected: |
+ void onDraw(const int loops, SkCanvas* canvas) SK_OVERRIDE { |
+ SkPoint result; |
+ for (int outer = 0; outer < loops; ++outer) { |
+ result = SkEvalQuadTangentAt(fPts, 0.5f); |
+ result = SkEvalQuadTangentAt(fPts, 0.5f); |
+ result = SkEvalQuadTangentAt(fPts, 0.5f); |
+ result = SkEvalQuadTangentAt(fPts, 0.5f); |
+ } |
+ } |
+}; |
+DEF_BENCH( return new EvalQuadTangentAt1; ) |
+ |
+//////// |
+ |
+class ChopQuadAt0 : public QuadBenchBase { |
+public: |
+ ChopQuadAt0() : QuadBenchBase("chopquadat0") {} |
+protected: |
+ void onDraw(const int loops, SkCanvas* canvas) SK_OVERRIDE { |
+ SkPoint dst[5]; |
+ for (int outer = 0; outer < loops; ++outer) { |
+ SkChopQuadAt(fPts, dst, 0.5f); |
+ SkChopQuadAt(fPts, dst, 0.5f); |
+ SkChopQuadAt(fPts, dst, 0.5f); |
+ SkChopQuadAt(fPts, dst, 0.5f); |
+ } |
+ } |
+}; |
+DEF_BENCH( return new ChopQuadAt0; ) |
+ |
+class ChopQuadAt1 : public QuadBenchBase { |
+public: |
+ ChopQuadAt1() : QuadBenchBase("chopquadat1") {} |
+protected: |
+ void onDraw(const int loops, SkCanvas* canvas) SK_OVERRIDE { |
+ SkPoint dst[5]; |
+ for (int outer = 0; outer < loops; ++outer) { |
+ SkChopQuadAt2(fPts, dst, 0.5f); |
+ SkChopQuadAt2(fPts, dst, 0.5f); |
+ SkChopQuadAt2(fPts, dst, 0.5f); |
+ SkChopQuadAt2(fPts, dst, 0.5f); |
+ } |
+ } |
+}; |
+DEF_BENCH( return new ChopQuadAt1; ) |