From 71dd3e0359b1c1e09fea751cd58f1728e467e750 Mon Sep 17 00:00:00 2001 From: "tomhudson@google.com" Date: Thu, 27 Oct 2011 13:27:20 +0000 Subject: New benchmark for blitRect based on call frequency observed while scrolling Gmail inside Chrome. Is a bit slow... git-svn-id: http://skia.googlecode.com/svn/trunk@2540 2bbb7eff-a529-9590-31e7-b0007b416f81 --- bench/ChromeBench.cpp | 498 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 498 insertions(+) create mode 100644 bench/ChromeBench.cpp (limited to 'bench/ChromeBench.cpp') diff --git a/bench/ChromeBench.cpp b/bench/ChromeBench.cpp new file mode 100644 index 0000000000..3373ef5c24 --- /dev/null +++ b/bench/ChromeBench.cpp @@ -0,0 +1,498 @@ +/* + * Copyright 2011 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ +#include "SkBenchmark.h" +#include "SkCanvas.h" +#include "SkPaint.h" +#include "SkString.h" + +/** + Benchmarks that try to emulate a particular Skia call pattern observed in Chrome. +*/ + +/// blitRect() calls emitted by Chrome while scrolling through gmail: count, width, height. +int gmailScrollingRectSpec [431*3] = { + 1, 1254, 1160, + 1, 64, 112, + 1, 1034, 261, + 1, 1166, 1, + 1, 1166, 20, + 1, 1254, 40, + 1, 140, 20, + 1, 22, 30, + 1, 22, 39, + 1, 294, 29, + 1, 336, 25, + 1, 336, 5, + 1, 37, 3, + 1, 37, 4, + 1, 37, 5, + 1, 41, 29, + 1, 57, 15, + 1, 72, 5, + 1, 72, 8, + 1, 76, 29, + 1, 981, 88, + 1, 990, 2, + 1, 990, 6, + 2, 220, 88, + 2, 294, 1, + 2, 37, 6, + 2, 391, 55, + 2, 57, 11, + 2, 57, 14, + 2, 57, 7, + 2, 981, 30, + 2, 990, 15, + 2, 990, 19, + 3, 114, 16, + 3, 1166, 39, + 3, 1254, 154, + 3, 12, 12, + 3, 162, 7, + 3, 164, 479, + 3, 167, 449, + 3, 16, 24, + 3, 204, 497, + 3, 205, 434, + 3, 220, 1127, + 3, 220, 1132, + 3, 220, 931, + 3, 220, 933, + 3, 220, 934, + 3, 297, 8, + 3, 72, 25, + 3, 87, 30, + 3, 981, 1, + 3, 981, 126, + 3, 990, 27, + 3, 990, 36, + 3, 991, 29, + 4, 1254, 306, + 4, 1254, 36, + 4, 1, 1, + 4, 1, 14, + 4, 1, 19, + 4, 1, 7, + 4, 21, 21, + 4, 220, 30, + 4, 46, 949, + 4, 509, 30, + 4, 57, 2, + 4, 57, 6, + 4, 990, 11, + 5, 13, 8, + 5, 198, 24, + 5, 24, 24, + 5, 25, 24, + 5, 2, 24, + 5, 37, 33, + 5, 57, 4, + 5, 599, 24, + 5, 90, 24, + 5, 981, 19, + 5, 990, 23, + 5, 990, 8, + 6, 101, 29, + 6, 117, 29, + 6, 1254, 88, + 6, 139, 29, + 6, 13, 12, + 6, 15, 15, + 6, 164, 25, + 6, 16, 16, + 6, 198, 7, + 6, 1, 12, + 6, 1, 15, + 6, 1, 27, + 6, 220, 936, + 6, 24, 7, + 6, 25, 7, + 6, 2, 7, + 6, 326, 29, + 6, 336, 29, + 6, 599, 7, + 6, 86, 29, + 6, 90, 7, + 6, 96, 29, + 6, 991, 31, + 7, 198, 12, + 7, 198, 20, + 7, 198, 33, + 7, 198, 35, + 7, 24, 12, + 7, 24, 20, + 7, 24, 33, + 7, 24, 35, + 7, 25, 12, + 7, 25, 20, + 7, 25, 33, + 7, 25, 35, + 7, 2, 12, + 7, 2, 20, + 7, 2, 33, + 7, 2, 35, + 7, 304, 1, + 7, 38, 29, + 7, 51, 29, + 7, 599, 12, + 7, 599, 20, + 7, 599, 33, + 7, 599, 35, + 7, 90, 12, + 7, 90, 20, + 7, 90, 33, + 7, 90, 35, + 8, 13, 5, + 8, 198, 13, + 8, 198, 23, + 8, 220, 1, + 8, 24, 13, + 8, 24, 23, + 8, 25, 13, + 8, 25, 23, + 8, 2, 13, + 8, 2, 23, + 8, 329, 28, + 8, 57, 10, + 8, 599, 13, + 8, 599, 23, + 8, 90, 13, + 8, 90, 23, + 9, 198, 17, + 9, 198, 19, + 9, 198, 37, + 9, 198, 5, + 9, 198, 8, + 9, 24, 17, + 9, 24, 19, + 9, 24, 37, + 9, 24, 5, + 9, 24, 8, + 9, 25, 17, + 9, 25, 19, + 9, 25, 37, + 9, 25, 5, + 9, 25, 8, + 9, 2, 17, + 9, 2, 19, + 9, 2, 37, + 9, 2, 5, + 9, 2, 8, + 9, 599, 17, + 9, 599, 19, + 9, 599, 37, + 9, 599, 5, + 9, 599, 8, + 9, 72, 29, + 9, 90, 17, + 9, 90, 19, + 9, 90, 37, + 9, 90, 5, + 9, 90, 8, + 10, 13, 11, + 10, 13, 9, + 10, 198, 26, + 10, 198, 28, + 10, 1, 23, + 10, 1, 4, + 10, 1, 6, + 10, 24, 26, + 10, 24, 28, + 10, 25, 26, + 10, 25, 28, + 10, 26, 24, + 10, 2, 26, + 10, 2, 28, + 10, 599, 26, + 10, 599, 28, + 10, 90, 26, + 10, 90, 28, + 11, 198, 27, + 11, 24, 27, + 11, 25, 27, + 11, 2, 27, + 11, 599, 27, + 11, 90, 27, + 12, 198, 14, + 12, 198, 21, + 12, 198, 3, + 12, 1, 11, + 12, 1, 2, + 12, 1, 8, + 12, 24, 14, + 12, 24, 21, + 12, 24, 3, + 12, 25, 14, + 12, 25, 21, + 12, 25, 3, + 12, 26, 7, + 12, 2, 14, + 12, 2, 21, + 12, 2, 3, + 12, 329, 14, + 12, 38, 2, + 12, 599, 14, + 12, 599, 21, + 12, 599, 3, + 12, 90, 14, + 12, 90, 21, + 12, 90, 3, + 13, 198, 11, + 13, 198, 15, + 13, 198, 31, + 13, 24, 11, + 13, 24, 15, + 13, 24, 31, + 13, 25, 11, + 13, 25, 15, + 13, 25, 31, + 13, 2, 11, + 13, 2, 15, + 13, 2, 31, + 13, 57, 13, + 13, 599, 11, + 13, 599, 15, + 13, 599, 31, + 13, 71, 29, + 13, 90, 11, + 13, 90, 15, + 13, 90, 31, + 14, 13, 2, + 14, 198, 10, + 14, 24, 10, + 14, 25, 10, + 14, 26, 12, + 14, 26, 20, + 14, 26, 33, + 14, 26, 35, + 14, 2, 10, + 14, 336, 1, + 14, 45, 29, + 14, 599, 10, + 14, 63, 29, + 14, 90, 10, + 15, 13, 3, + 15, 198, 2, + 15, 198, 29, + 15, 198, 34, + 15, 24, 2, + 15, 24, 29, + 15, 24, 34, + 15, 25, 2, + 15, 25, 29, + 15, 25, 34, + 15, 2, 2, + 15, 2, 29, + 15, 2, 34, + 15, 599, 2, + 15, 599, 29, + 15, 599, 34, + 15, 90, 2, + 15, 90, 29, + 15, 90, 34, + 16, 13, 4, + 16, 13, 6, + 16, 198, 16, + 16, 198, 9, + 16, 1, 10, + 16, 24, 16, + 16, 24, 9, + 16, 25, 16, + 16, 25, 9, + 16, 26, 13, + 16, 26, 23, + 16, 2, 16, + 16, 2, 9, + 16, 599, 16, + 16, 599, 9, + 16, 90, 16, + 16, 90, 9, + 17, 13, 7, + 17, 198, 18, + 17, 24, 18, + 17, 25, 18, + 17, 2, 18, + 17, 599, 18, + 17, 90, 18, + 18, 198, 22, + 18, 198, 32, + 18, 198, 36, + 18, 198, 4, + 18, 24, 22, + 18, 24, 32, + 18, 24, 36, + 18, 24, 4, + 18, 25, 22, + 18, 25, 32, + 18, 25, 36, + 18, 25, 4, + 18, 26, 17, + 18, 26, 19, + 18, 26, 37, + 18, 26, 5, + 18, 26, 8, + 18, 2, 22, + 18, 2, 32, + 18, 2, 36, + 18, 2, 4, + 18, 599, 22, + 18, 599, 32, + 18, 599, 36, + 18, 599, 4, + 18, 90, 22, + 18, 90, 32, + 18, 90, 36, + 18, 90, 4, + 19, 13, 10, + 20, 1254, 30, + 20, 16, 1007, + 20, 26, 26, + 20, 26, 28, + 21, 198, 6, + 21, 24, 6, + 21, 25, 6, + 21, 2, 6, + 21, 599, 6, + 21, 90, 6, + 22, 198, 38, + 22, 22, 40, + 22, 24, 38, + 22, 25, 38, + 22, 26, 27, + 22, 2, 38, + 22, 599, 38, + 22, 90, 38, + 23, 1254, 1160, + 24, 220, 930, + 24, 26, 14, + 24, 26, 21, + 24, 26, 3, + 26, 11, 11, + 26, 1, 13, + 26, 26, 11, + 26, 26, 15, + 26, 26, 31, + 28, 26, 10, + 30, 176, 60, + 30, 26, 2, + 30, 26, 29, + 30, 26, 34, + 32, 26, 16, + 32, 26, 9, + 34, 26, 18, + 36, 26, 22, + 36, 26, 32, + 36, 26, 36, + 36, 26, 4, + 36, 37, 26, + 42, 26, 6, + 43, 115, 29, + 44, 198, 25, + 44, 24, 25, + 44, 25, 25, + 44, 26, 38, + 44, 2, 25, + 44, 599, 25, + 44, 90, 25, + 46, 22, 1, + 47, 198, 30, + 47, 25, 30, + 47, 2, 30, + 47, 599, 30, + 47, 90, 30, + 48, 24, 30, + 52, 176, 30, + 58, 140, 24, + 58, 4, 30, + 63, 990, 29, + 64, 1254, 1, + 88, 26, 25, + 92, 198, 39, + 92, 25, 39, + 92, 2, 39, + 92, 599, 39, + 92, 90, 39, + 93, 24, 39, + 94, 26, 30, + 108, 1254, 1051, + 117, 140, 1, + 119, 160, 1, + 126, 1, 29, + 132, 135, 16, + 147, 72, 16, + 184, 26, 39, + 238, 990, 1, + 376, 11, 1007, + 380, 11, 487, + 1389, 1034, 1007, + 1870, 57, 16, + 4034, 1, 16, + 8521, 198, 40, + 8521, 25, 40, + 8521, 2, 40, + 8521, 599, 40, + 8521, 90, 40, + 8543, 24, 40, + 8883, 13, 13, + 17042, 26, 40, + 17664, 198, 1, + 17664, 25, 1, + 17664, 2, 1, + 17664, 599, 1, + 17664, 90, 1, + 17710, 24, 1, + 35328, 26, 1, +}; + +/// Emulates the mix of rects blitted by gmail during scrolling +class ScrollGmailBench : public SkBenchmark { + enum { + W = 1254, + H = 1160, + N = 431 + }; +public: + ScrollGmailBench(void* param) : INHERITED(param) { } + +protected: + + virtual const char* onGetName() { return "chrome_scrollGmail"; } + virtual void onDraw(SkCanvas* canvas) { + SkDEBUGCODE(this->validateBounds(canvas)); + SkPaint paint; + this->setupPaint(&paint); + for (int i = 0; i < N; i++) { + SkRect current; + setRectangle(current, i); + for (int j = 0; j < gmailScrollingRectSpec[i*3]; j++) { + canvas->drawRect(current, paint); + } + } + } + virtual SkIPoint onGetSize() { return SkIPoint::Make(W, H); } + + void setRectangle(SkRect& current, int i) { + current.set(0, 0, + SkIntToScalar(gmailScrollingRectSpec[i*3+1]), SkIntToScalar(gmailScrollingRectSpec[i*3+2])); + } + void validateBounds(SkCanvas* canvas) { + SkIRect bounds; + canvas->getClipDeviceBounds(&bounds); + SkASSERT(bounds.right()-bounds.left() >= W); + SkASSERT(bounds.bottom()-bounds.top() >= H); + } + + +private: + typedef SkBenchmark INHERITED; +}; + +static SkBenchmark* ScrollGmailFactory(void* p) { + return SkNEW_ARGS(ScrollGmailBench, (p)); +} + +static BenchRegistry gScrollGmailReg(ScrollGmailFactory); -- cgit v1.2.3