add bench for SkPoint::normalize()
authorreed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>
Fri, 3 May 2013 12:56:39 +0000 (12:56 +0000)
committerreed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>
Fri, 3 May 2013 12:56:39 +0000 (12:56 +0000)
git-svn-id: http://skia.googlecode.com/svn/trunk@8977 2bbb7eff-a529-9590-31e7-b0007b416f81

bench/MathBench.cpp

index 90cc4b8..1e4f281 100644 (file)
@@ -433,6 +433,55 @@ private:
 
 ///////////////////////////////////////////////////////////////////////////////
 
+class NormalizeBench : public SkBenchmark {
+    enum {
+        ARRAY = SkBENCHLOOP(1000),
+        LOOP = SkBENCHLOOP(1000),
+    };
+    SkVector fVec[ARRAY];
+    bool fUsePortable;
+    
+public:
+    NormalizeBench(void* param, bool usePortable)
+    : INHERITED(param)
+    , fUsePortable(usePortable) {
+        
+        SkRandom rand;
+        for (int i = 0; i < ARRAY; ++i) {
+            fVec[i].set(rand.nextSScalar1(), rand.nextSScalar1());
+        }
+        
+        fName = "point_normalize";
+        fIsRendering = false;
+    }
+    
+    // just so the compiler doesn't remove our loops
+    virtual void process(int) {}
+    
+protected:
+    virtual void onDraw(SkCanvas*) {
+        int accum = 0;
+        
+        for (int j = 0; j < LOOP; ++j) {
+            for (int i = 0; i < ARRAY; ++i) {
+                accum += fVec[i].normalize();
+            }
+            this->process(accum);
+        }
+    }
+    
+    virtual const char* onGetName() {
+        return fName;
+    }
+    
+private:
+    const char* fName;
+    
+    typedef SkBenchmark INHERITED;
+};
+
+///////////////////////////////////////////////////////////////////////////////
+
 DEF_BENCH( return new NoOpMathBench(p); )
 DEF_BENCH( return new SlowISqrtMathBench(p); )
 DEF_BENCH( return new FastISqrtMathBench(p); )
@@ -452,3 +501,5 @@ DEF_BENCH( return new FloorBench(p, true); )
 
 DEF_BENCH( return new CLZBench(p, false); )
 DEF_BENCH( return new CLZBench(p, true); )
+
+DEF_BENCH( return new NormalizeBench(p, false); )