Major bench refactoring.
- Use FLAGS_.
- Remove outer repeat loop.
- Tune inner loop automatically.
BUG=skia:1590
R=epoger@google.com, scroggo@google.com
Review URL: https://codereview.chromium.org/23478013
git-svn-id: http://skia.googlecode.com/svn/trunk@11187 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/bench/PathBench.cpp b/bench/PathBench.cpp
index 057a2b0..37b47dd 100644
--- a/bench/PathBench.cpp
+++ b/bench/PathBench.cpp
@@ -29,7 +29,6 @@
SkPaint fPaint;
SkString fName;
Flags fFlags;
- enum { N = SkBENCHLOOP(1000) };
public:
PathBench(void* param, Flags flags) : INHERITED(param), fFlags(flags) {
fPaint.setStyle(flags & kStroke_Flag ? SkPaint::kStroke_Style :
@@ -63,7 +62,7 @@
path.transform(m);
}
- int count = N;
+ int count = this->getLoops();
if (fFlags & kBig_Flag) {
count >>= 2;
}
@@ -326,8 +325,6 @@
}
protected:
- enum { N = SkBENCHLOOP(5000) };
-
virtual const char* onGetName() SK_OVERRIDE {
return "path_create";
}
@@ -338,7 +335,7 @@
}
virtual void onDraw(SkCanvas*) SK_OVERRIDE {
- for (int i = 0; i < N; ++i) {
+ for (int i = 0; i < this->getLoops(); ++i) {
this->makePath(&fPaths[i & (kPathCnt - 1)]);
}
this->restartMakingPaths();
@@ -365,8 +362,6 @@
}
protected:
- enum { N = SkBENCHLOOP(30000) };
-
virtual const char* onGetName() SK_OVERRIDE {
return "path_copy";
}
@@ -380,7 +375,7 @@
this->finishedMakingPaths();
}
virtual void onDraw(SkCanvas*) SK_OVERRIDE {
- for (int i = 0; i < N; ++i) {
+ for (int i = 0; i < this->getLoops(); ++i) {
int idx = i & (kPathCnt - 1);
fCopies[idx] = fPaths[idx];
}
@@ -409,8 +404,6 @@
}
protected:
- enum { N = SkBENCHLOOP(30000) };
-
virtual const char* onGetName() SK_OVERRIDE {
return fInPlace ? "path_transform_in_place" : "path_transform_copy";
}
@@ -430,11 +423,11 @@
virtual void onDraw(SkCanvas*) SK_OVERRIDE {
if (fInPlace) {
- for (int i = 0; i < N; ++i) {
+ for (int i = 0; i < this->getLoops(); ++i) {
fPaths[i & (kPathCnt - 1)].transform(fMatrix);
}
} else {
- for (int i = 0; i < N; ++i) {
+ for (int i = 0; i < this->getLoops(); ++i) {
int idx = i & (kPathCnt - 1);
fPaths[idx].transform(fMatrix, &fTransformed[idx]);
}
@@ -466,8 +459,6 @@
}
protected:
- enum { N = SkBENCHLOOP(40000) };
-
virtual const char* onGetName() SK_OVERRIDE {
return "path_equality_50%";
}
@@ -485,7 +476,7 @@
}
virtual void onDraw(SkCanvas*) SK_OVERRIDE {
- for (int i = 0; i < N; ++i) {
+ for (int i = 0; i < this->getLoops(); ++i) {
int idx = i & (kPathCnt - 1);
fParity ^= (fPaths[idx] == fCopies[idx & ~0x1]);
}
@@ -525,8 +516,6 @@
}
protected:
- enum { N = SkBENCHLOOP(15000) };
-
virtual const char* onGetName() SK_OVERRIDE {
switch (fType) {
case kAdd_AddType:
@@ -564,42 +553,42 @@
virtual void onDraw(SkCanvas*) SK_OVERRIDE {
switch (fType) {
case kAdd_AddType:
- for (int i = 0; i < N; ++i) {
+ for (int i = 0; i < this->getLoops(); ++i) {
int idx = i & (kPathCnt - 1);
SkPath result = fPaths0[idx];
result.addPath(fPaths1[idx]);
}
break;
case kAddTrans_AddType:
- for (int i = 0; i < N; ++i) {
+ for (int i = 0; i < this->getLoops(); ++i) {
int idx = i & (kPathCnt - 1);
SkPath result = fPaths0[idx];
result.addPath(fPaths1[idx], 2 * SK_Scalar1, 5 * SK_Scalar1);
}
break;
case kAddMatrix_AddType:
- for (int i = 0; i < N; ++i) {
+ for (int i = 0; i < this->getLoops(); ++i) {
int idx = i & (kPathCnt - 1);
SkPath result = fPaths0[idx];
result.addPath(fPaths1[idx], fMatrix);
}
break;
case kPathTo_AddType:
- for (int i = 0; i < N; ++i) {
+ for (int i = 0; i < this->getLoops(); ++i) {
int idx = i & (kPathCnt - 1);
SkPath result = fPaths0[idx];
result.pathTo(fPaths1[idx]);
}
break;
case kReverseAdd_AddType:
- for (int i = 0; i < N; ++i) {
+ for (int i = 0; i < this->getLoops(); ++i) {
int idx = i & (kPathCnt - 1);
SkPath result = fPaths0[idx];
result.reverseAddPath(fPaths1[idx]);
}
break;
case kReversePathTo_AddType:
- for (int i = 0; i < N; ++i) {
+ for (int i = 0; i < this->getLoops(); ++i) {
int idx = i & (kPathCnt - 1);
SkPath result = fPaths0[idx];
result.reversePathTo(fPaths1[idx]);
@@ -631,9 +620,6 @@
SkString fName;
Flags fFlags;
- enum {
- N = SkBENCHLOOP(100)
- };
public:
CirclesBench(void* param, Flags flags) : INHERITED(param), fFlags(flags) {
fName.printf("circles_%s", fFlags & kStroke_Flag ? "stroke" : "fill");
@@ -657,7 +643,7 @@
SkRect r;
- for (int i = 0; i < 5000; ++i) {
+ for (int i = 0; i < this->getLoops(); ++i) {
SkScalar radius = rand.nextUScalar1() * 3;
r.fLeft = rand.nextUScalar1() * 300;
r.fTop = rand.nextUScalar1() * 300;
@@ -694,9 +680,6 @@
protected:
SkString fName;
- enum {
- N = SkBENCHLOOP(100)
- };
public:
ArbRoundRectBench(void* param, bool zeroRad) : INHERITED(param), fZeroRad(zeroRad) {
if (zeroRad) {
@@ -757,7 +740,7 @@
SkRandom rand;
SkRect r;
- for (int i = 0; i < 5000; ++i) {
+ for (int i = 0; i < this->getLoops(); ++i) {
SkPaint paint;
paint.setColor(0xff000000 | rand.nextU());
paint.setAntiAlias(true);
@@ -825,7 +808,7 @@
}
virtual void onDraw(SkCanvas*) SK_OVERRIDE {
- for (int i = 0; i < N; ++i) {
+ for (int i = 0; i < this->getLoops(); ++i) {
const SkRect& rect = fQueryRects[i % kQueryRectCnt];
fParity = fParity != fPath.conservativelyContainsRect(rect);
}
@@ -852,7 +835,6 @@
}
enum {
- N = SkBENCHLOOP(100000),
kQueryRectCnt = 400,
};
static const SkRect kBounds; // bounds for all random query rects
@@ -874,9 +856,6 @@
#include "SkGeometry.h"
class ConicBench_Chop5 : public SkBenchmark {
- enum {
- N = 100000
- };
SkConic fRQ;
public:
ConicBench_Chop5(void* param) : INHERITED(param) {
@@ -893,7 +872,7 @@
virtual void onDraw(SkCanvas*) SK_OVERRIDE {
SkConic dst[2];
- for (int i = 0; i < N; ++i) {
+ for (int i = 0; i < this->getLoops(); ++i) {
fRQ.chopAt(0.5f, dst);
}
}
@@ -902,9 +881,6 @@
};
class ConicBench_ChopHalf : public SkBenchmark {
- enum {
- N = 100000
- };
SkConic fRQ;
public:
ConicBench_ChopHalf(void* param) : INHERITED(param) {
@@ -921,7 +897,7 @@
virtual void onDraw(SkCanvas*) SK_OVERRIDE {
SkConic dst[2];
- for (int i = 0; i < N; ++i) {
+ for (int i = 0; i < this->getLoops(); ++i) {
fRQ.chop(dst);
}
}
@@ -954,7 +930,6 @@
protected:
enum {
- N = 20000,
CONICS = 100
};
SkConic fConics[CONICS];
@@ -974,7 +949,7 @@
virtual void onDraw(SkCanvas*) SK_OVERRIDE {
SkVector err;
- for (int i = 0; i < N; ++i) {
+ for (int i = 0; i < this->getLoops(); ++i) {
for (int j = 0; j < CONICS; ++j) {
fConics[j].computeAsQuadError(&err);
}
@@ -995,7 +970,7 @@
}
virtual void onDraw(SkCanvas*) SK_OVERRIDE {
- for (int i = 0; i < N; ++i) {
+ for (int i = 0; i < this->getLoops(); ++i) {
for (int j = 0; j < CONICS; ++j) {
fConics[j].asQuadTol(SK_ScalarHalf);
}
@@ -1016,7 +991,7 @@
}
virtual void onDraw(SkCanvas*) SK_OVERRIDE {
- for (int i = 0; i < N; ++i) {
+ for (int i = 0; i < this->getLoops(); ++i) {
for (int j = 0; j < CONICS; ++j) {
fConics[j].computeQuadPOW2(SK_ScalarHalf);
}