HomePhabricator

copies: make calculating lazy for dir move detection's "addedfiles"

Authored by spectral.

Description

copies: make calculating lazy for dir move detection's "addedfiles"

The information calculated here was only needed if (a) --debug was specified, or
(b) a directory move was plausibly detected. With tree manifests (especially in
my pathological repo and with our custom setup), pre-calculating the u1 and
u2 can be quite slow, and it's not even necessary in many cases. Let's delay
calculating it until we know it's actually necessary. This should have no
observable differences in output.

Performance

I ran a rebase command in my pathological repo, rebasing two nodes across
several public phase commits, but where no directory copies exist in any of the
paths I'm tracking.

Before
Time (mean ± σ):      3.711 s ±  0.061 s    [User: 0.3 ms, System: 1.5 ms]
Range (min … max):    3.640 s …  3.827 s    10 runs
After
Time (mean ± σ):     868.3 ms ±  10.1 ms    [User: 0.5 ms, System: 1.2 ms]
Range (min … max):   856.6 ms … 883.6 ms    10 runs

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