Closed Bug 1452111 Opened 6 years ago Closed 6 years ago

Very slow rendering of TicketMaster website

Categories

(Core :: Web Painting, defect)

defect
Not set
normal

Tracking

()

RESOLVED FIXED
mozilla61
Performance Impact ?
Tracking Status
firefox61 --- fixed

People

(Reporter: mconley, Assigned: kats)

References

()

Details

Attachments

(1 file)

STR:

1) Open https://www1.ticketmaster.ca/event/1000544CA76B4173?irgwc=1&clickid=xCJwjY2lgQz2x7Zz-xw%3AjXQvUkjwbrWMiXtwSk0&camefrom=CFC_BUYAT_219208&impradid=219208&REFERRAL_ID=tmfeedbuyat219208&wt.mc_id=aff_BUYAT_219208&utm_source=219208-Bandsintown&impradname=Bandsintown&utm_medium=affiliate in a tab in some window
2) Switch tabs away from the TicketMaster page
3) Switch back

ER:

A reasonably quick tab switch without a tab switch spinner.

AR:

A pretty reliable tab switch spinner.

Here's a profile: https://perfht.ml/2Jnl6nS
WebRender doesn't appear to help much - I enabled WebRender on my Windows box and got this profile:

https://perfht.ml/2H42riK
There's a huge amount of time spent in layerbuilding/hit test info. I was able to reproduce this, can you Matt?
Component: Graphics → Layout: Web Painting
Flags: needinfo?(matt.woodrow)
There are... a lot of them.

Every seat circle has a separate nsDisplayCompositorHitTestInfo, with CompositorHitTestInfo::eDispatchToContent.

Basically all the time spent is resizing the band array (allocating, freeing and memmoving) as we add new items to the region.

Seems like one option could be to try figure this out at the frame tree level, and have the parent frame emit a single nsDisplayCompositorHitTestInfo for the parent and allow the child frames to use that one.

Otherwise we probably want to just simplify this region as we build it (we used to that for the nsDisplayLayerEventRegions version).
Flags: needinfo?(matt.woodrow) → needinfo?(bugmail)
Yeah. We're still doing it for mMaybeHitRegion at [1], we should do the same for mDispatchToContentHitRegion. Looking at the code history I don't see where we used to do it for the nsDisplayLayerEventRegions version, I only see the simplification for the maybe-hit regions.

[1] https://searchfox.org/mozilla-central/rev/9f3da81290054c5b8955bb67ff98cae66676f745/layout/painting/FrameLayerBuilder.cpp#3736
Flags: needinfo?(bugmail)
Here's a patch that simplifies the mDispatchToContentHitRegion (totally untested): https://treeherder.mozilla.org/#/jobs?repo=try&revision=e3c5d7a0a4d118f77020e96166f84aae489faafe
Although I don't see a spinner on tab switch, interacting with the page is definitely slow (on an m-c build). With the build in comment 5 it seems much better. :mconley, can you confirm? You can use this to test the build:

./mach mozregression --repo try --launch e3c5d7a0a4d1
Flags: needinfo?(mconley)
/cc'ing Miko also just as a FYI. I don't think this is really a regression from switching to nsDisplayCompositorHitTestInfo although maybe it got worse with that?

Try push with tests is at https://treeherder.mozilla.org/#/jobs?repo=try&revision=f39a929ab64c43b24e55e0be98cc08dcd7a834ca
Assignee: nobody → bugmail
Yeah, that's way way better!
Flags: needinfo?(mconley)
Comment on attachment 8967780 [details]
Bug 1452111 - Simplify dispatch-to-content regions as well.

https://reviewboard.mozilla.org/r/236478/#review242398
Attachment #8967780 - Flags: review?(matt.woodrow) → review+
Pushed by kgupta@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/0c7db264c68e
Simplify dispatch-to-content regions as well. r=mattwoodrow
https://hg.mozilla.org/mozilla-central/rev/0c7db264c68e
Status: NEW → RESOLVED
Closed: 6 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla61
Performance Impact: --- → ?
Whiteboard: [qf]
You need to log in before you can comment on or make changes to this bug.