aboutsummaryrefslogtreecommitdiffhomepage
path: root/bench/ScalarBench.cpp
diff options
context:
space:
mode:
authorGravatar reed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2012-06-12 21:29:43 +0000
committerGravatar reed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2012-06-12 21:29:43 +0000
commitdf9d6f17681ee38cc82b1ee0f328314412c1a94b (patch)
tree2677e6d85b96b1565cfd387f9d677070e91e9650 /bench/ScalarBench.cpp
parent4bdfb8c9d6482a56c7212034a6f73046227ed023 (diff)
add bench for SkScalarIsFinite
git-svn-id: http://skia.googlecode.com/svn/trunk@4239 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'bench/ScalarBench.cpp')
-rw-r--r--bench/ScalarBench.cpp36
1 files changed, 34 insertions, 2 deletions
diff --git a/bench/ScalarBench.cpp b/bench/ScalarBench.cpp
index 8889d7b74f..fe14251b65 100644
--- a/bench/ScalarBench.cpp
+++ b/bench/ScalarBench.cpp
@@ -24,7 +24,8 @@ public:
protected:
virtual int mulLoopCount() const { return 1; }
- virtual const char* onGetName() {
+ virtual const char* onGetName() SK_OVERRIDE {
+ SkASSERT(!"stop");
return fName.c_str();
}
@@ -80,7 +81,7 @@ private:
class ForcedIntComparisonBench : public ScalarBench {
public:
ForcedIntComparisonBench(void* param)
- : INHERITED(param, "compare_forced_int") {
+ : INHERITED(param, "compare_forced_int") {
init9(fArray);
}
protected:
@@ -98,6 +99,35 @@ private:
typedef ScalarBench INHERITED;
};
+class IsFiniteScalarBench : public ScalarBench {
+public:
+ IsFiniteScalarBench(void* param) : INHERITED(param, "isfinite") {
+ SkRandom rand;
+ for (size_t i = 0; i < ARRAY_N; ++i) {
+ fArray[i] = rand.nextSScalar1();
+ }
+ }
+protected:
+ virtual int mulLoopCount() const { return 1; }
+ virtual void performTest() SK_OVERRIDE {
+ int sum = 0;
+ for (size_t i = 0; i < ARRAY_N; ++i) {
+ sum += SkScalarIsFinite(fArray[i]);
+ }
+ // we do this so the compiler won't optimize our loop away...
+ this->doSomething(fArray, sum);
+ }
+
+ virtual void doSomething(SkScalar array[], int sum) {}
+private:
+ enum {
+ ARRAY_N = 64
+ };
+ SkScalar fArray[ARRAY_N];
+
+ typedef ScalarBench INHERITED;
+};
+
///////////////////////////////////////////////////////////////////////////////
class RectBoundsBench : public SkBenchmark {
@@ -137,7 +167,9 @@ private:
static SkBenchmark* S0(void* p) { return new FloatComparisonBench(p); }
static SkBenchmark* S1(void* p) { return new ForcedIntComparisonBench(p); }
static SkBenchmark* S2(void* p) { return new RectBoundsBench(p); }
+static SkBenchmark* S3(void* p) { return new IsFiniteScalarBench(p); }
static BenchRegistry gReg0(S0);
static BenchRegistry gReg1(S1);
static BenchRegistry gReg2(S2);
+static BenchRegistry gReg3(S3);