aboutsummaryrefslogtreecommitdiffhomepage
path: root/bench/XfermodeBench.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'bench/XfermodeBench.cpp')
-rw-r--r--bench/XfermodeBench.cpp24
1 files changed, 24 insertions, 0 deletions
diff --git a/bench/XfermodeBench.cpp b/bench/XfermodeBench.cpp
index e9b3b95021..29e8598758 100644
--- a/bench/XfermodeBench.cpp
+++ b/bench/XfermodeBench.cpp
@@ -62,6 +62,28 @@ private:
typedef SkBenchmark INHERITED;
};
+class XferCreateBench : public SkBenchmark {
+public:
+ XferCreateBench() {
+ fIsRendering = false;
+ }
+
+protected:
+ virtual const char* onGetName() SK_OVERRIDE { return "xfermode_create"; }
+
+ virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+ for (int outer = 0; outer < this->getLoops() * 10; ++outer) {
+ for (int i = 0; i <= SkXfermode::kLastMode; ++i) {
+ SkXfermode* xfer = SkXfermode::Create(SkXfermode::Mode(i));
+ SkSafeUnref(xfer);
+ }
+ }
+ }
+
+private:
+ typedef SkBenchmark INHERITED;
+};
+
//////////////////////////////////////////////////////////////////////////////
#define CONCAT_I(x, y) x ## y
@@ -106,3 +128,5 @@ BENCH(SkXfermode::kLuminosity_Mode)
BENCH(SkLumaMaskXfermode::Create(SkXfermode::kSrcIn_Mode), "SrcInLuma")
BENCH(SkLumaMaskXfermode::Create(SkXfermode::kDstIn_Mode), "DstInLuma")
BENCH(SkLumaMaskXfermode::Create(SkXfermode::kSrcOver_Mode), "SrcOverLuma")
+
+DEF_BENCH(return new XferCreateBench;)