Commit 1f550350 authored by Arseniy Alekseyev's avatar Arseniy Alekseyev
Browse files

rhg: stop manifest traversal when no more files are needed

Stopping the traversal early can skip a significant part
of the manifest traversal, to avoid some of its cost.

The worst-case benchmarks are favorable, as well.
Running [hg cat] on the last file in the manifest of
a large repo, I'm seeing a ~4ms improvement (150ms -> 146ms),
so this time is now almost indistinguishable from the
baseline ("brute force") implementation.

Running [hg cat] on ~220 files together with the last file
of the repo is further improved by ~5ms or so.

I suspect the raw performance improvements are caused by splitting
the manifest search and the file data access into separate phases,
instead of interleaving them.

Differential Revision: https://phab.mercurial-scm.org/D11616
parent 6b5773f89183
Pipeline #27780 failed with stages
in 120 minutes and 7 seconds