summaryrefslogtreecommitdiffstats
path: root/chromium/cc/resources/picture_layer_tiling_perftest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/cc/resources/picture_layer_tiling_perftest.cc')
-rw-r--r--chromium/cc/resources/picture_layer_tiling_perftest.cc159
1 files changed, 81 insertions, 78 deletions
diff --git a/chromium/cc/resources/picture_layer_tiling_perftest.cc b/chromium/cc/resources/picture_layer_tiling_perftest.cc
index 7a9b8dff4b4..1e698b9e0ec 100644
--- a/chromium/cc/resources/picture_layer_tiling_perftest.cc
+++ b/chromium/cc/resources/picture_layer_tiling_perftest.cc
@@ -2,6 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+#include "cc/debug/lap_timer.h"
#include "cc/resources/picture_layer_tiling.h"
#include "cc/test/fake_picture_layer_tiling_client.h"
@@ -18,10 +19,14 @@ static const int kTimeCheckInterval = 10;
class PictureLayerTilingPerfTest : public testing::Test {
public:
- PictureLayerTilingPerfTest() : num_runs_(0) {}
+ PictureLayerTilingPerfTest()
+ : timer_(kWarmupRuns,
+ base::TimeDelta::FromMilliseconds(kTimeLimitMillis),
+ kTimeCheckInterval) {}
virtual void SetUp() OVERRIDE {
picture_layer_tiling_client_.SetTileSize(gfx::Size(256, 256));
+ picture_layer_tiling_client_.set_max_tiles_for_interest_area(250);
picture_layer_tiling_ = PictureLayerTiling::Create(
1, gfx::Size(256 * 50, 256 * 50), &picture_layer_tiling_client_);
picture_layer_tiling_->CreateAllTilesForTesting();
@@ -31,70 +36,38 @@ class PictureLayerTilingPerfTest : public testing::Test {
picture_layer_tiling_.reset(NULL);
}
- void EndTest() {
- elapsed_ = base::TimeTicks::HighResNow() - start_time_;
- }
-
- bool DidRun() {
- ++num_runs_;
- if (num_runs_ == kWarmupRuns)
- start_time_ = base::TimeTicks::HighResNow();
-
- if (!start_time_.is_null() && (num_runs_ % kTimeCheckInterval) == 0) {
- base::TimeDelta elapsed = base::TimeTicks::HighResNow() - start_time_;
- if (elapsed >= base::TimeDelta::FromMilliseconds(kTimeLimitMillis)) {
- elapsed_ = elapsed;
- return false;
- }
- }
- return true;
- }
-
void RunInvalidateTest(const std::string& test_name, const Region& region) {
- start_time_ = base::TimeTicks();
- num_runs_ = 0;
+ timer_.Reset();
do {
picture_layer_tiling_->Invalidate(region);
- } while (DidRun());
+ timer_.NextLap();
+ } while (!timer_.HasTimeLimitExpired());
- perf_test::PrintResult("invalidation", "", test_name,
- num_runs_ / elapsed_.InSecondsF(), "runs/s", true);
+ perf_test::PrintResult(
+ "invalidation", "", test_name, timer_.LapsPerSecond(), "runs/s", true);
}
- void RunUpdateTilePrioritiesStationaryTest(
- const std::string& test_name,
- const gfx::Transform& transform) {
- start_time_ = base::TimeTicks();
- num_runs_ = 0;
+ void RunUpdateTilePrioritiesStationaryTest(const std::string& test_name,
+ const gfx::Transform& transform) {
+ gfx::Rect viewport_rect(0, 0, 1024, 768);
- gfx::Size layer_bounds(50 * 256, 50 * 256);
+ timer_.Reset();
do {
picture_layer_tiling_->UpdateTilePriorities(
- ACTIVE_TREE,
- layer_bounds,
- gfx::Rect(layer_bounds),
- gfx::Rect(layer_bounds),
- layer_bounds,
- layer_bounds,
- 1.f,
- 1.f,
- transform,
- transform,
- num_runs_ + 1,
- 250);
- } while (DidRun());
-
- perf_test::PrintResult("update_tile_priorities_stationary", "", test_name,
- num_runs_ / elapsed_.InSecondsF(), "runs/s", true);
+ ACTIVE_TREE, viewport_rect, 1.f, timer_.NumLaps() + 1);
+ timer_.NextLap();
+ } while (!timer_.HasTimeLimitExpired());
+
+ perf_test::PrintResult("update_tile_priorities_stationary",
+ "",
+ test_name,
+ timer_.LapsPerSecond(),
+ "runs/s",
+ true);
}
- void RunUpdateTilePrioritiesScrollingTest(
- const std::string& test_name,
- const gfx::Transform& transform) {
- start_time_ = base::TimeTicks();
- num_runs_ = 0;
-
- gfx::Size layer_bounds(50 * 256, 50 * 256);
+ void RunUpdateTilePrioritiesScrollingTest(const std::string& test_name,
+ const gfx::Transform& transform) {
gfx::Size viewport_size(1024, 768);
gfx::Rect viewport_rect(viewport_size);
int xoffsets[] = {10, 0, -10, 0};
@@ -102,44 +75,66 @@ class PictureLayerTilingPerfTest : public testing::Test {
int offsetIndex = 0;
int offsetCount = 0;
const int maxOffsetCount = 1000;
+
+ timer_.Reset();
do {
picture_layer_tiling_->UpdateTilePriorities(
- ACTIVE_TREE,
- viewport_size,
- viewport_rect,
- gfx::Rect(layer_bounds),
- layer_bounds,
- layer_bounds,
- 1.f,
- 1.f,
- transform,
- transform,
- num_runs_ + 1,
- 250);
-
- viewport_rect = gfx::Rect(
- viewport_rect.x() + xoffsets[offsetIndex],
- viewport_rect.y() + yoffsets[offsetIndex],
- viewport_rect.width(),
- viewport_rect.height());
+ ACTIVE_TREE, viewport_rect, 1.f, timer_.NumLaps() + 1);
+
+ viewport_rect = gfx::Rect(viewport_rect.x() + xoffsets[offsetIndex],
+ viewport_rect.y() + yoffsets[offsetIndex],
+ viewport_rect.width(),
+ viewport_rect.height());
if (++offsetCount > maxOffsetCount) {
offsetCount = 0;
offsetIndex = (offsetIndex + 1) % 4;
}
- } while (DidRun());
+ timer_.NextLap();
+ } while (!timer_.HasTimeLimitExpired());
+
+ perf_test::PrintResult("update_tile_priorities_scrolling",
+ "",
+ test_name,
+ timer_.LapsPerSecond(),
+ "runs/s",
+ true);
+ }
- perf_test::PrintResult("update_tile_priorities_scrolling", "", test_name,
- num_runs_ / elapsed_.InSecondsF(), "runs/s", true);
+ void RunTilingRasterTileIteratorTest(const std::string& test_name,
+ int num_tiles,
+ const gfx::Rect& viewport) {
+ gfx::Size bounds(10000, 10000);
+ picture_layer_tiling_ =
+ PictureLayerTiling::Create(1, bounds, &picture_layer_tiling_client_);
+ picture_layer_tiling_->UpdateTilePriorities(
+ ACTIVE_TREE, viewport, 1.0f, 1.0);
+
+ timer_.Reset();
+ do {
+ int count = num_tiles;
+ for (PictureLayerTiling::TilingRasterTileIterator it(
+ picture_layer_tiling_.get(), ACTIVE_TREE);
+ it && count;
+ ++it) {
+ --count;
+ }
+ timer_.NextLap();
+ } while (!timer_.HasTimeLimitExpired());
+
+ perf_test::PrintResult("tiling_raster_tile_iterator",
+ "",
+ test_name,
+ timer_.LapsPerSecond(),
+ "runs/s",
+ true);
}
private:
FakePictureLayerTilingClient picture_layer_tiling_client_;
scoped_ptr<PictureLayerTiling> picture_layer_tiling_;
- base::TimeTicks start_time_;
- base::TimeDelta elapsed_;
- int num_runs_;
+ LapTimer timer_;
};
TEST_F(PictureLayerTilingPerfTest, Invalidate) {
@@ -160,6 +155,7 @@ TEST_F(PictureLayerTilingPerfTest, DISABLED_UpdateTilePriorities) {
TEST_F(PictureLayerTilingPerfTest, UpdateTilePriorities) {
#endif // defined(OS_ANDROID)
gfx::Transform transform;
+
RunUpdateTilePrioritiesStationaryTest("no_transform", transform);
RunUpdateTilePrioritiesScrollingTest("no_transform", transform);
@@ -172,6 +168,13 @@ TEST_F(PictureLayerTilingPerfTest, UpdateTilePriorities) {
RunUpdateTilePrioritiesScrollingTest("perspective", transform);
}
+TEST_F(PictureLayerTilingPerfTest, TilingRasterTileIterator) {
+ RunTilingRasterTileIteratorTest("32_100x100", 32, gfx::Rect(0, 0, 100, 100));
+ RunTilingRasterTileIteratorTest("32_500x500", 32, gfx::Rect(0, 0, 500, 500));
+ RunTilingRasterTileIteratorTest("64_100x100", 64, gfx::Rect(0, 0, 100, 100));
+ RunTilingRasterTileIteratorTest("64_500x500", 64, gfx::Rect(0, 0, 500, 500));
+}
+
} // namespace
} // namespace cc