Page MenuHomePhabricator

Reduce the frequency of DOM scans to rebuild inlines when scrolling revisions
ClosedPublic

Authored by epriestley on May 15 2020, 4:35 PM.
Tags
None
Referenced Files
F15356653: D21261.id50627.diff
Tue, Mar 11, 6:23 AM
F15331989: D21261.diff
Fri, Mar 7, 3:48 PM
F15308720: D21261.diff
Thu, Mar 6, 6:36 AM
Unknown Object (File)
Tue, Feb 25, 1:03 PM
Unknown Object (File)
Tue, Feb 25, 9:34 AM
Unknown Object (File)
Mon, Feb 24, 5:40 PM
Unknown Object (File)
Mon, Feb 24, 6:43 AM
Unknown Object (File)
Mon, Feb 24, 6:40 AM
Subscribers
None

Details

Summary

Ref T13513. See PHI1734, which raises a concern about the performance of large revisions near the 100-change threshold.

Currently, getInlines() is called whenever the scroll position transitions between two changesets, and it performs a relatively complicated DOM scan to lift inlines out of the document.

This shows up as taking a small but nontrivial amount of time in Firefox profiles and should be safely memoizable.

Test Plan
  • Under Firefox profiling, scrolled through a large revision.
  • Before change: getInlines() appeared as the highest-cost thing we're explicitly doing on profiles.
  • After change: getInlines() was no longer meaningfully represented on profiles.
  • Created inlines, edited inlines, etc. Didn't identify any broken behavior.

Diff Detail

Repository
rP Phabricator
Branch
perf1
Lint
Lint Passed
Unit
No Test Coverage
Build Status
Buildable 24444
Build 33683: Run Core Tests
Build 33682: arc lint + arc unit