HomePhabricator

treemanifest: stop storing full path for each item in manifest._lazydirs

Authored by spectral.

Description

treemanifest: stop storing full path for each item in manifest._lazydirs

This information is obtainable, if needed, based on the lazydirs key (which is
the entry name) and the manifest's dir() method.

Performance

This is actually both a memory and a performance improvement, but it's likely to
be a very small one in most situations. In the pathological repo I've been using
for testing other performance work I've done recently, this reduced the time for
a rebase operation (rebasing two commits across a public-phase change that
touches a sibling of one of my tracked directories where the common parent is
massive (>>10k entries)):

Before
Time (mean ± σ):      4.059 s ±  0.121 s    [User: 0.9 ms, System: 0.6 ms]
Range (min … max):    3.941 s …  4.352 s    10 runs
After
Time (mean ± σ):      3.707 s ±  0.060 s    [User: 0.8 ms, System: 0.8 ms]
Range (min … max):    3.648 s …  3.818 s    10 runs

Differential Revision: https://phab.mercurial-scm.org/D9553