summaryrefslogtreecommitdiffstats
path: root/cc/picture_layer_tiling.cc
diff options
context:
space:
mode:
authorwhunt@chromium.org <whunt@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-01-31 02:09:35 +0000
committerwhunt@chromium.org <whunt@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-01-31 02:09:35 +0000
commit854bfc1371e7eb0eb1a3d686504a27e7d0a8e557 (patch)
tree67058acb87ab400c1871473ac37f44daefaf3338 /cc/picture_layer_tiling.cc
parentcae769ccb848f62ed3d6d1ac1499038f55d7cce9 (diff)
downloadchromium_src-854bfc1371e7eb0eb1a3d686504a27e7d0a8e557.zip
chromium_src-854bfc1371e7eb0eb1a3d686504a27e7d0a8e557.tar.gz
chromium_src-854bfc1371e7eb0eb1a3d686504a27e7d0a8e557.tar.bz2
A host of micro-optimizations and a refactor of TimeForBoundsToIntersect
I used perf to profile the compositor thread and addressed performance problems with the top fuctions. The result is about a 2.5x performance boost. (~1.3ms -> ~.5ms) on List of Pokemon for UpdateTilePriorities. Most of the optimizations are inlining small functions. The refactor of TimeForBoundsToIntersect also eliminates many unnecessary float-double conversions. BUG=172406 Review URL: https://chromiumcodereview.appspot.com/12084031 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@179770 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'cc/picture_layer_tiling.cc')
-rw-r--r--cc/picture_layer_tiling.cc13
1 files changed, 8 insertions, 5 deletions
diff --git a/cc/picture_layer_tiling.cc b/cc/picture_layer_tiling.cc
index 6e8e883..aa38776 100644
--- a/cc/picture_layer_tiling.cc
+++ b/cc/picture_layer_tiling.cc
@@ -4,6 +4,7 @@
#include "cc/picture_layer_tiling.h"
+#include "base/debug/trace_event.h"
#include "cc/math_util.h"
#include "ui/gfx/point_conversions.h"
#include "ui/gfx/rect_conversions.h"
@@ -334,6 +335,7 @@ void PictureLayerTiling::UpdateTilePriorities(
const gfx::Transform& last_screen_transform,
const gfx::Transform& current_screen_transform,
double time_delta) {
+ TRACE_EVENT0("cc", "PictureLayerTiling::UpdateTilePriorities");
gfx::Rect content_rect = ContentRect();
if (content_rect.IsEmpty())
return;
@@ -400,12 +402,12 @@ void PictureLayerTiling::UpdateTilePriorities(
last_scale,
last_scale) + last_offset;
- float time_to_visible_in_seconds =
- TilePriority::TimeForBoundsToIntersect(
- last_screen_rect, current_screen_rect, time_delta, view_rect);
float distance_to_visible_in_pixels =
TilePriority::manhattanDistance(current_screen_rect, view_rect);
+ float time_to_visible_in_seconds =
+ TilePriority::TimeForBoundsToIntersect(
+ last_screen_rect, current_screen_rect, time_delta, view_rect);
TilePriority priority(
resolution_,
time_to_visible_in_seconds,
@@ -437,11 +439,12 @@ void PictureLayerTiling::UpdateTilePriorities(
gfx::RectF last_screen_rect = MathUtil::mapClippedRect(
last_screen_transform, last_layer_content_rect);
+ float distance_to_visible_in_pixels =
+ TilePriority::manhattanDistance(current_screen_rect, view_rect);
+
float time_to_visible_in_seconds =
TilePriority::TimeForBoundsToIntersect(
last_screen_rect, current_screen_rect, time_delta, view_rect);
- float distance_to_visible_in_pixels =
- TilePriority::manhattanDistance(current_screen_rect, view_rect);
TilePriority priority(
resolution_,