diff options
Diffstat (limited to 'bench/MathBench.cpp')
-rw-r--r-- | bench/MathBench.cpp | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/bench/MathBench.cpp b/bench/MathBench.cpp index 1fc5705be8..32a89d64ef 100644 --- a/bench/MathBench.cpp +++ b/bench/MathBench.cpp @@ -480,6 +480,48 @@ private: /////////////////////////////////////////////////////////////////////////////// +class FixedMathBench : public SkBenchmark { + enum { + N = SkBENCHLOOP(1000), + NN = SkBENCHLOOP(1000), + }; + float fData[N]; + SkFixed fResult[N]; +public: + + FixedMathBench(void* param) : INHERITED(param) { + SkRandom rand; + for (int i = 0; i < N; ++i) { + fData[i] = rand.nextSScalar1(); + } + + fIsRendering = false; + } + +protected: + virtual void onDraw(SkCanvas*) { + for (int j = 0; j < NN; ++j) { + for (int i = 0; i < N - 4; ++i) { + fResult[i] = SkFloatToFixed(fData[i]); + } + } + + SkPaint paint; + if (paint.getAlpha() == 0) { + SkDebugf("%d\n", fResult[0]); + } + } + + virtual const char* onGetName() { + return "float_to_fixed"; + } + +private: + typedef SkBenchmark INHERITED; +}; + +/////////////////////////////////////////////////////////////////////////////// + DEF_BENCH( return new NoOpMathBench(p); ) DEF_BENCH( return new SlowISqrtMathBench(p); ) DEF_BENCH( return new FastISqrtMathBench(p); ) @@ -501,3 +543,5 @@ DEF_BENCH( return new CLZBench(p, false); ) DEF_BENCH( return new CLZBench(p, true); ) DEF_BENCH( return new NormalizeBench(p); ) + +DEF_BENCH( return new FixedMathBench(p); ) |