Chromium Code Reviews| Index: cc/resources/picture_layer_tiling_perftest.cc |
| diff --git a/cc/resources/picture_layer_tiling_perftest.cc b/cc/resources/picture_layer_tiling_perftest.cc |
| index a610c1ea28e9a331aa9c9f0982362b0bf54dde61..d044d23eb2484a791d8f39c394d28f1f2a5ea3cd 100644 |
| --- a/cc/resources/picture_layer_tiling_perftest.cc |
| +++ b/cc/resources/picture_layer_tiling_perftest.cc |
| @@ -141,6 +141,71 @@ class PictureLayerTilingPerfTest : public testing::Test { |
| true); |
| } |
| + void RunTilingEvictionTileIteratorConstructionTest( |
| + const std::string& test_name, |
| + const gfx::Rect& viewport) { |
| + gfx::Size bounds(viewport.size()); |
| + picture_layer_tiling_ = |
| + PictureLayerTiling::Create(1, bounds, &picture_layer_tiling_client_); |
| + picture_layer_tiling_->UpdateTilePriorities( |
| + ACTIVE_TREE, viewport, 1.0f, 1.0, NULL, NULL, gfx::Transform()); |
| + |
| + timer_.Reset(); |
| + const int num_tree_priorities = 3; |
|
reveman
2014/07/16 20:17:05
nit: can you remove this and just do "priorities[]
vmpstr
2014/07/16 20:35:22
Done.
|
| + TreePriority priorities[num_tree_priorities] = { |
| + SAME_PRIORITY_FOR_BOTH_TREES, SMOOTHNESS_TAKES_PRIORITY, |
| + NEW_CONTENT_TAKES_PRIORITY}; |
| + int priority_count = 0; |
| + do { |
| + PictureLayerTiling::TilingEvictionTileIterator it( |
| + picture_layer_tiling_.get(), priorities[priority_count]); |
| + priority_count = (priority_count + 1) % num_tree_priorities; |
| + timer_.NextLap(); |
| + } while (!timer_.HasTimeLimitExpired()); |
| + |
| + perf_test::PrintResult("tiling_eviction_tile_iterator_construction", |
| + "", |
| + test_name, |
| + timer_.LapsPerSecond(), |
| + "runs/s", |
| + true); |
| + } |
| + |
| + void RunTilingEvictionTileIteratorTest(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, NULL, NULL, gfx::Transform()); |
| + |
| + timer_.Reset(); |
| + const int num_tree_priorities = 3; |
|
reveman
2014/07/16 20:17:05
nit: remove and use arraysize?
vmpstr
2014/07/16 20:35:22
Done.
|
| + TreePriority priorities[num_tree_priorities] = { |
| + SAME_PRIORITY_FOR_BOTH_TREES, SMOOTHNESS_TAKES_PRIORITY, |
| + NEW_CONTENT_TAKES_PRIORITY}; |
| + int priority_count = 0; |
| + do { |
| + int count = num_tiles; |
| + for (PictureLayerTiling::TilingEvictionTileIterator it( |
| + picture_layer_tiling_.get(), priorities[priority_count]); |
| + it && count; |
|
reveman
2014/07/16 20:17:05
can you DHCECK(it) instead as the result would not
vmpstr
2014/07/16 20:35:22
That's the reason it needs resources. The iterator
reveman
2014/07/16 22:03:34
Can you set it to a fake resource? It seems better
vmpstr
2014/07/16 23:43:29
Done.
|
| + ++it) { |
| + --count; |
| + } |
| + priority_count = (priority_count + 1) % num_tree_priorities; |
| + timer_.NextLap(); |
| + } while (!timer_.HasTimeLimitExpired()); |
| + |
| + perf_test::PrintResult("tiling_eviction_tile_iterator", |
| + "", |
| + test_name, |
| + timer_.LapsPerSecond(), |
| + "runs/s", |
| + true); |
| + } |
|
reveman
2014/07/16 20:17:05
It's a bit hard to evaluate this test when the res
vmpstr
2014/07/16 20:35:22
I've changed the name, since I think it's kind of
|
| + |
| private: |
| FakePictureLayerTilingClient picture_layer_tiling_client_; |
| scoped_ptr<PictureLayerTiling> picture_layer_tiling_; |
| @@ -186,6 +251,28 @@ TEST_F(PictureLayerTilingPerfTest, TilingRasterTileIterator) { |
| RunTilingRasterTileIteratorTest("64_500x500", 64, gfx::Rect(0, 0, 500, 500)); |
| } |
| +TEST_F(PictureLayerTilingPerfTest, TilingEvictionTileIteratorConstruction) { |
| + RunTilingEvictionTileIteratorConstructionTest("0_0_100x100", |
| + gfx::Rect(0, 0, 100, 100)); |
| + RunTilingEvictionTileIteratorConstructionTest("50_0_100x100", |
| + gfx::Rect(50, 0, 100, 100)); |
| + RunTilingEvictionTileIteratorConstructionTest("100_0_100x100", |
| + gfx::Rect(100, 0, 100, 100)); |
| + RunTilingEvictionTileIteratorConstructionTest("150_0_100x100", |
| + gfx::Rect(150, 0, 100, 100)); |
| +} |
| + |
| +TEST_F(PictureLayerTilingPerfTest, TilingEvictionTileIterator) { |
| + RunTilingEvictionTileIteratorTest( |
| + "32_100x100", 32, gfx::Rect(0, 0, 100, 100)); |
| + RunTilingEvictionTileIteratorTest( |
| + "32_500x500", 32, gfx::Rect(0, 0, 500, 500)); |
| + RunTilingEvictionTileIteratorTest( |
| + "64_100x100", 64, gfx::Rect(0, 0, 100, 100)); |
| + RunTilingEvictionTileIteratorTest( |
| + "64_500x500", 64, gfx::Rect(0, 0, 500, 500)); |
| +} |
| + |
| } // namespace |
| } // namespace cc |