[Webkit-unassigned] [Bug 33520] New: Mapping from local to container coord space is O(N^2)

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Mon Jan 11 23:37:36 PST 2010


https://bugs.webkit.org/show_bug.cgi?id=33520

           Summary: Mapping from local to container coord space is O(N^2)
           Product: WebKit
           Version: 528+ (Nightly build)
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: Normal
          Priority: P2
         Component: Layout and Rendering
        AssignedTo: webkit-unassigned at lists.webkit.org
        ReportedBy: jamesr at chromium.org
                CC: eric at webkit.org, hyatt at apple.com,
                    simon.fraser at apple.com, ojan at chromium.org


The attached test pages show a huge amount of time spend mapping from local to
container coordinate space, mainly in the functions:

WebCore::RenderLayer::convertToLayerCoords()
WebCore::RenderBox::mapLocalToContainer()
WebCore::RenderBox::computeRectForRepaint()
WebCore::TransformationMatrix::multLeft() [on a page with -webkit-transform
styles]

The test pages feature a <span> inside 2048 nested <div>s that are either
position:relative or have a transform applied, so they each have a RenderLayer
associated with them.  The bounds of each of these <div>s is calculated in
order to hit test and in order to calculate the repaint bounds of the layer. 
This is calculated by starting at the target renderer and walking up to each
container and applying the appropriate transform recursively.  There's no
caching of this calculation, so each transform is applied (depth of DOM)^2
times.

This affects any page that has any number of elements that have layers and have
children (i.e. most all of them).

-- 
Configure bugmail: https://bugs.webkit.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.



More information about the webkit-unassigned mailing list