From 0889f682fbbf19878fd43fc406b21c8639edce1c Mon Sep 17 00:00:00 2001 From: "reed@google.com" Date: Fri, 3 May 2013 12:56:39 +0000 Subject: add bench for SkPoint::normalize() git-svn-id: http://skia.googlecode.com/svn/trunk@8977 2bbb7eff-a529-9590-31e7-b0007b416f81 --- bench/MathBench.cpp | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) (limited to 'bench/MathBench.cpp') diff --git a/bench/MathBench.cpp b/bench/MathBench.cpp index 90cc4b81fe..1e4f2818e3 100644 --- a/bench/MathBench.cpp +++ b/bench/MathBench.cpp @@ -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); ) -- cgit v1.2.3