Index: bench/XfermodeBench.cpp |
diff --git a/bench/XfermodeBench.cpp b/bench/XfermodeBench.cpp |
index e9b3b95021ed5f1ed8ea9f4d4719d31938042651..da11b29e6a76bdd1471c9dfd4bbaa471b60ba431 100644 |
--- a/bench/XfermodeBench.cpp |
+++ b/bench/XfermodeBench.cpp |
@@ -62,6 +62,29 @@ private: |
typedef SkBenchmark INHERITED; |
}; |
+class XferCreateBench : public SkBenchmark { |
+ enum { |
+ N = 1000 |
+ }; |
+public: |
+ XferCreateBench() {} |
+ |
+protected: |
+ virtual const char* onGetName() SK_OVERRIDE { return "xfermode_create"; } |
+ |
+ virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE { |
+ for (int outer = 0; outer < N; ++outer) { |
mtklein
2013/10/04 14:26:40
Instead of N, use this->getLoops(). (Or N * this-
|
+ 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 +129,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;) |