diff options
author | 2014-07-11 08:42:11 -0700 | |
---|---|---|
committer | 2014-07-11 08:42:11 -0700 | |
commit | 00a8fae0cee239181c9e4fc7775b01b661c72f5e (patch) | |
tree | cb3778dd87a7b65d1cfa6e33424074e621b60dc0 /bench/RefCntBench.cpp | |
parent | d08cb905a7cc80d8fb868bbd14fffe1cd68adcce (diff) |
Add support for 64bit atomic inc/dec/cas
R=mtklein@google.com
Author: bsalomon@google.com
Review URL: https://codereview.chromium.org/377073002
Diffstat (limited to 'bench/RefCntBench.cpp')
-rw-r--r-- | bench/RefCntBench.cpp | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/bench/RefCntBench.cpp b/bench/RefCntBench.cpp index 351513b831..f846b1ac60 100644 --- a/bench/RefCntBench.cpp +++ b/bench/RefCntBench.cpp @@ -14,6 +14,54 @@ enum { M = 2 }; +class AtomicInc32 : public Benchmark { +public: + AtomicInc32() : fX(0) {} + + virtual bool isSuitableFor(Backend backend) SK_OVERRIDE { + return backend == kNonRendering_Backend; + } + +protected: + virtual const char* onGetName() { + return "atomic_inc_32"; + } + + virtual void onDraw(const int loops, SkCanvas*) { + for (int i = 0; i < loops; ++i) { + sk_atomic_inc(&fX); + } + } + +private: + int32_t fX; + typedef Benchmark INHERITED; +}; + +class AtomicInc64 : public Benchmark { +public: + AtomicInc64() : fX(0) {} + + virtual bool isSuitableFor(Backend backend) SK_OVERRIDE { + return backend == kNonRendering_Backend; + } + +protected: + virtual const char* onGetName() { + return "atomic_inc_64"; + } + + virtual void onDraw(const int loops, SkCanvas*) { + for (int i = 0; i < loops; ++i) { + sk_atomic_inc(&fX); + } + } + +private: + int64_t fX; + typedef Benchmark INHERITED; +}; + class RefCntBench_Stack : public Benchmark { public: virtual bool isSuitableFor(Backend backend) SK_OVERRIDE { @@ -191,6 +239,9 @@ private: /////////////////////////////////////////////////////////////////////////////// +DEF_BENCH( return new AtomicInc32(); ) +DEF_BENCH( return new AtomicInc64(); ) + DEF_BENCH( return new RefCntBench_Stack(); ) DEF_BENCH( return new RefCntBench_Heap(); ) DEF_BENCH( return new RefCntBench_New(); ) |