This is an archive of the discontinued Mercurial Phabricator instance.

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

Authored by spectral on Dec 9 2020, 4:41 PM.

Details

Summary

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

Diff Detail

Repository
rHG Mercurial
Lint
Automatic diff as part of commit; lint not applicable.
Unit
Automatic diff as part of commit; unit tests not applicable.

Event Timeline

spectral created this revision.Dec 9 2020, 4:41 PM
pulkit accepted this revision.Dec 10 2020, 3:43 AM
This revision is now accepted and ready to land.Dec 10 2020, 3:43 AM