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 RenderingAssignee: 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)
Reported 2011-03-31 13:24:42 PDT
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
Simon Fraser (smfr)
Comment 1 2011-03-31 13:25:51 PDT
Simon Fraser (smfr)
Comment 2 2011-03-31 13:50:01 PDT
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
Note You need to log in before you can comment on or make changes to this bug.