Add shared mutex benchmark.
authorherb <herb@google.com>
Fri, 18 Sep 2015 17:50:35 +0000 (10:50 -0700)
committerCommit bot <commit-bot@chromium.org>
Fri, 18 Sep 2015 17:50:35 +0000 (10:50 -0700)
BUG=skia:

Review URL: https://codereview.chromium.org/1352863004

bench/MutexBench.cpp

index ad9a92a..6dd4e53 100644 (file)
@@ -36,8 +36,33 @@ private:
     SkString fBenchName;
 };
 
+class SharedBench : public Benchmark {
+public:
+    bool isSuitableFor(Backend backend) override {
+        return backend == kNonRendering_Backend;
+    }
+
+protected:
+    const char* onGetName() override {
+        return "SkSharedMutexSharedUncontendedBenchmark";
+    }
+
+    void onDraw(const int loops, SkCanvas*) override {
+        SkSharedMutex mu;
+        for (int i = 0; i < loops; i++) {
+            mu.acquireShared();
+            mu.releaseShared();
+        }
+    }
+
+private:
+    typedef Benchmark INHERITED;
+};
+
 ///////////////////////////////////////////////////////////////////////////////
 
 DEF_BENCH( return new MutexBench<SkSharedMutex>(SkString("SkSharedMutex")); )
 DEF_BENCH( return new MutexBench<SkMutex>(SkString("SkMutex")); )
 DEF_BENCH( return new MutexBench<SkSpinlock>(SkString("SkSpinlock")); )
+DEF_BENCH( return new SharedBench; )
+