HomePhorge

Fix performance issue with large changesets in Differential

Description

Fix performance issue with large changesets in Differential

Summary:
Fixes T3151. Javelin treats a behavior without parameters as a global behavior and invokes it only once no matter how many times it is initialized (this is necessarily correct for any reasonable behavior, as the inputs do not vary). A recent patch changed differential-dropdown-menus from a zero-argument global behavior to an implicitly nonzero-argument behavior by adding pht.

Currently, we initialize the behavior next to dropdown menu creation, so this resulted in O(N^2) initializations of the menus. For large diffs, this locks browsers. Instead, initialize outside of the dropdown loop so we ginitialize each menu just once.

Test Plan: Viewed a 2,000 file diff without browser lock.

Reviewers: wez, vrana, btrahan

Reviewed By: wez

CC: aran

Maniphest Tasks: T3151

Differential Revision: https://secure.phabricator.com/D5885

Details

Provenance
epriestleyAuthored on May 10 2013, 5:39 AM
themackabuPushed on Mar 25 2025, 8:07 PM
Parents
rP13464cc56803: Clean up inline edit ui
Branches
Unknown
Tags
Unknown

Event Timeline