From 7c44ca926bf42b3b2e56131f250c0fd58f87ac71 Mon Sep 17 00:00:00 2001 From: reed Date: Wed, 18 Mar 2015 19:04:43 -0700 Subject: replace SkFixedDiv impl with native 64bit math BUG=skia: TBR= Review URL: https://codereview.chromium.org/1022543003 --- bench/MathBench.cpp | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) (limited to 'bench/MathBench.cpp') diff --git a/bench/MathBench.cpp b/bench/MathBench.cpp index 5b46d1c704..e0d519407f 100644 --- a/bench/MathBench.cpp +++ b/bench/MathBench.cpp @@ -545,6 +545,50 @@ private: /////////////////////////////////////////////////////////////////////////////// +class DivBitsBench : public Benchmark { +protected: + enum { + N = 1000 + }; + volatile int32_t fSrc[N], fDst[N]; +public: + DivBitsBench() { + SkRandom rand; + for (int i = 0; i < N; ++i) { + fSrc[i] = rand.nextU(); + } + } +protected: + virtual void onDraw(const int loops, SkCanvas*) { + for (int j = 0; j < loops; ++j) { + for (int i = 0; i < N - 4; ++i) { + fDst[i] = SkDivBits(fSrc[i], fSrc[i] >> 3, 16); + } + } + } + virtual const char* onGetName() { + return "divbits"; + } +}; +DEF_BENCH( return new DivBitsBench; ) + +class FixedDivBench : public DivBitsBench { +protected: + virtual void onDraw(const int loops, SkCanvas*) { + for (int j = 0; j < loops; ++j) { + for (int i = 0; i < N - 4; ++i) { + fDst[i] = SkFixedDiv(fSrc[i], fSrc[i] >> 3); + } + } + } + virtual const char* onGetName() { + return "fixeddiv"; + } +}; +DEF_BENCH( return new FixedDivBench; ) + +/////////////////////////////////////////////////////////////////////////////// + template class DivModBench : public Benchmark { SkString fName; -- cgit v1.2.3