diff options
author | reed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2012-04-30 12:07:55 +0000 |
---|---|---|
committer | reed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2012-04-30 12:07:55 +0000 |
commit | 50129dbfaa3be4414933dec5d6c202ac0de71501 (patch) | |
tree | d4665140354b346fa54526549acfe4767dd2d5dd /bench | |
parent | 67c3184a67c66e2e6f3d24ba6bccf1f3b32a5b7b (diff) |
add contains xy test, adjust number of rects (using xor this time)
git-svn-id: http://skia.googlecode.com/svn/trunk@3788 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'bench')
-rw-r--r-- | bench/RegionBench.cpp | 36 |
1 files changed, 27 insertions, 9 deletions
diff --git a/bench/RegionBench.cpp b/bench/RegionBench.cpp index 1204b946f8..eeeed5c197 100644 --- a/bench/RegionBench.cpp +++ b/bench/RegionBench.cpp @@ -25,16 +25,32 @@ static bool diff_proc(SkRegion& a, SkRegion& b) { return result.op(a, b, SkRegion::kDifference_Op); } -static bool contains_proc(SkRegion& a, SkRegion& b) { - SkIRect r = b.getBounds(); +static bool containsrgn_proc(SkRegion& a, SkRegion& b) { + SkIRect r = a.getBounds(); r.inset(r.width()/4, r.height()/4); - return a.contains(r); + (void)a.contains(r); + + r = b.getBounds(); + r.inset(r.width()/4, r.height()/4); + (void)b.contains(r); } static bool sects_proc(SkRegion& a, SkRegion& b) { return a.intersects(b); } +static bool containsxy_proc(SkRegion& a, SkRegion& b) { + const SkIRect& r = a.getBounds(); + const int dx = r.width() / 8; + const int dy = r.height() / 8; + for (int y = r.fTop; y < r.fBottom; y += dy) { + for (int x = r.fLeft; x < r.fRight; x += dx) { + (void)a.contains(x, y); + } + } + return true; +} + class RegionBench : public SkBenchmark { public: typedef bool (*Proc)(SkRegion& a, SkRegion& b); @@ -46,7 +62,7 @@ public: enum { W = 1024, H = 768, - N = SkBENCHLOOP(5000) + N = SkBENCHLOOP(2000) }; SkIRect randrect(SkRandom& rand) { @@ -62,9 +78,9 @@ public: fName.printf("Region_%s_%d", name, count); SkRandom rand; - for (int i = 0; i < N; i++) { - fA.op(randrect(rand), SkRegion::kUnion_Op); - fB.op(randrect(rand), SkRegion::kUnion_Op); + for (int i = 0; i < count; i++) { + fA.op(randrect(rand), SkRegion::kXOR_Op); + fB.op(randrect(rand), SkRegion::kXOR_Op); } } @@ -82,16 +98,18 @@ private: typedef SkBenchmark INHERITED; }; -#define SMALL 64 +#define SMALL 16 static SkBenchmark* gF0(void* p) { return SkNEW_ARGS(RegionBench, (p, SMALL, union_proc, "union")); } static SkBenchmark* gF1(void* p) { return SkNEW_ARGS(RegionBench, (p, SMALL, sect_proc, "intersect")); } static SkBenchmark* gF2(void* p) { return SkNEW_ARGS(RegionBench, (p, SMALL, diff_proc, "difference")); } -static SkBenchmark* gF3(void* p) { return SkNEW_ARGS(RegionBench, (p, SMALL, contains_proc, "contains")); } +static SkBenchmark* gF3(void* p) { return SkNEW_ARGS(RegionBench, (p, SMALL, containsrgn_proc, "containsrgb")); } static SkBenchmark* gF4(void* p) { return SkNEW_ARGS(RegionBench, (p, SMALL, sects_proc, "intersects")); } +static SkBenchmark* gF5(void* p) { return SkNEW_ARGS(RegionBench, (p, SMALL, containsxy_proc, "containsxy")); } static BenchRegistry gR0(gF0); static BenchRegistry gR1(gF1); static BenchRegistry gR2(gF2); static BenchRegistry gR3(gF3); static BenchRegistry gR4(gF4); +static BenchRegistry gR5(gF5); |