Summary: | SVG hit testing is *way* too slow | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Product: | WebKit | Reporter: | Eric Seidel (no email) <eric> | ||||||||
Component: | SVG | Assignee: | Nobody <webkit-unassigned> | ||||||||
Status: | RESOLVED FIXED | ||||||||||
Severity: | Normal | CC: | alp, krit, simon.fraser, zimmermann | ||||||||
Priority: | P2 | ||||||||||
Version: | 528+ (Nightly build) | ||||||||||
Hardware: | Mac | ||||||||||
OS: | OS X 10.5 | ||||||||||
Attachments: |
|
Description
Eric Seidel (no email)
2008-05-29 10:57:43 PDT
Created attachment 21416 [details]
test case (sorta a layout test, not quite)
See the attached test case. We don't really have a very good way to do perf-based layout tests. The attached test could be modified to be say PASS when it runs under a certain threshold or something.
Created attachment 26329 [details] Patch This patch implements your suggestion, and removes much of the hit testing cost. However, repaint is still very expensive. Sharking found bug 23050. Repaint is very expensive because EVERYTHING repaints even if only a small area is dirtied.RenderPath::paint() does no short-circuiting if the relativeBBox() is not in the dirty rect. *** Bug 15704 has been marked as a duplicate of this bug. *** (In reply to comment #3) > Repaint is very expensive because EVERYTHING repaints even if only a small area > is dirtied.RenderPath::paint() does no short-circuiting if the relativeBBox() > is not in the dirty rect. Will the patch on bug 30055 fix this? Created attachment 55039 [details]
Patch
(In reply to comment #7) > Created an attachment (id=55039) [details] > Patch This is a huge speed-up of the test attached to this br. Comment on attachment 55039 [details]
Patch
Looks great to me, as discussed before :-) r=me.
Comment on attachment 55039 [details] Patch Clearing flags on attachment: 55039 Committed r58804: <http://trac.webkit.org/changeset/58804> All reviewed patches have been landed. Closing bug. |