Try to skip display list merging for sub lists that can't have changed
Categories
(Core :: Web Painting, enhancement, P2)
Tracking
()
Tracking | Status | |
---|---|---|
firefox68 | --- | fixed |
People
(Reporter: mattwoodrow, Assigned: mattwoodrow)
References
(Blocks 1 open bug)
Details
Attachments
(1 file)
We currently iterate the entire display list with RDL, once during PreProcessDisplayList, and once during merging.
Although the building part is much quicker now, for sites with large display lists, these two passes can still be expensive.
We should be able to detect when a subtree of the display list can't have changed, and skip the merging phase entirely.
Assignee | ||
Comment 1•5 years ago
|
||
Assignee | ||
Comment 2•5 years ago
|
||
This is a new version of displaylist_mutate, that builds a much deeper frame tree and display list.
https://mattwoodrow.github.io/dl-test/dl-test.html?count=20000&layer=flattened&siblings=5
On this test, my current Nightly does 29ms display list builds, with all the time being spent in PreProcessDisplayList and merging.
The attached patch reduces that to around 5ms, with merging basically gone from the profile.
Assignee | ||
Updated•5 years ago
|
Pushed by mwoodrow@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/900ceaf4d39c Skip merging display lists that we're sure can't have changed. r=miko
Comment 4•5 years ago
|
||
bugherder |
Comment 5•5 years ago
|
||
Big perf improvements noticed! \0/
== Change summary for alert #20692 (as of Mon, 29 Apr 2019 16:34:33 GMT) ==
Improvements:
15% displaylist_mutate windows7-32-shippable opt e10s stylo 1,975.27 -> 1,680.86
15% displaylist_mutate windows10-64-shippable opt e10s stylo 1,847.60 -> 1,573.54
10% displaylist_mutate linux64-shippable opt e10s stylo 1,667.28 -> 1,493.95
6% displaylist_mutate windows10-64-shippable-qr opt e10s stylo 3,686.10 -> 3,465.36
5% displaylist_mutate linux64-shippable-qr opt e10s stylo 3,887.45 -> 3,704.16
For up to date results, see: https://treeherder.mozilla.org/perf.html#/alerts?id=20692
Description
•