Bug 57571
| Summary: | We spend time in updateLayerPositions() for every layout, whether or not layers changed | ||
|---|---|---|---|
| Product: | WebKit | Reporter: | Simon Fraser (smfr) <simon.fraser> |
| Component: | Layout and Rendering | Assignee: | Nobody <webkit-unassigned> |
| Status: | NEW | ||
| Severity: | Normal | CC: | hyatt, jamesr, jchaffraix, koivisto, mitz, simon.fraser |
| Priority: | P2 | Keywords: | InRadar |
| Version: | 528+ (Nightly build) | ||
| Hardware: | All | ||
| OS: | OS X 10.5 | ||
| URL: | http://cnn.com | ||
Simon Fraser (smfr)
When cnn.com does layout, there are a lot of calls to RenderBox::computeRectForRepaint(), via RenderLayer::updateLayerPositions(). It's inefficient for the following reasons:
1. We don't track whether any layers actually changed, so we may not actually have to do any work
2. We're walking down the RenderLayer tree, but for each layer walking back up the renderers doing computeRectForRepaint(), so it's > O(N)
| Attachments | ||
|---|---|---|
| Add attachment proposed patch, testcase, etc. |
Simon Fraser (smfr)
<rdar://problem/9216902>
Simon Fraser (smfr)
Ideas here:
1. remove the repaint code from layers (hyatt says it's old)
2. have layout detect when a layer is moved or resized