[Webkit-unassigned] [Bug 36564] Performance regression for setting content of <text> in SVG

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Sat Mar 27 01:02:57 PDT 2010


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


Nikolas Zimmermann <zimmermann at kde.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |darin at apple.com




--- Comment #13 from Nikolas Zimmermann <zimmermann at kde.org>  2010-03-27 01:02:57 PST ---
(In reply to comment #11)
> Here's a summary of what I learned about this performance regression. This
> could be helpful in attempting to fix the rest of the regression.
> 
> 1. clipperBoundingBoxForRenderer() was the major source of the regression. This
> patch optimizes that function a lot, but it could probably be optimized more.
> There is a lot of overhead associated with getRenderSVGResourceById(). It would
> be better if SVGRenderStyle stored a pointer to the resource instead of just
> the ID. There should be a way to make sure these are reset whenever an id on
> the page changes.
Excellent idea! Dirk and me brainstormed several ideas as well yesterday --
it's completly clear that the ID based approach is too slow. We want to finish
the SVGResource -> RenderSVGResource transition first, then fix the performance
issues. Dirk has the patches almost completed (except for filter, where someone
else is looking into atm).

> 
> 2. It might help to inline clipperBoundingBoxForRenderer(). And
> filterBoundingBoxForRenderer() and maskerBoundingBoxForRenderer() while we're
> at it. 
> 
> 3. Being able to cache repaint rects in RenderSVGContainer and RenderSVGRoot
> actually would NOT speed up this test case, but it would speed up other tests.
> The cached repaint rect would need to be invalidated in layout, and by changing
> the text content, this test case lays out so frequently that there would be
> nothing to gain from caching repaint rects in these classes.

There's a problem with the caching, as the render tree has no idea when
transformations change, they all just pull them from the SVG DOM every time on
paint() (see RenderPath). I am working towards a new transform handling, that
will fix that and allow us to cache those rects.

Glad you've tracked down the first performance regressions!

-- 
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