Mercurial > public > mercurial-scm > hg
view rust/hg-core/src/operations/mod.rs @ 48225:0cc69017d47f
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
author | Arseniy Alekseyev <aalekseyev@janestreet.com> |
---|---|
date | Tue, 05 Oct 2021 15:10:42 +0100 |
parents | bf8837e3d7ce |
children | 95ffa065204e |
line wrap: on
line source
//! A distinction is made between operations and commands. //! An operation is what can be done whereas a command is what is exposed by //! the cli. A single command can use several operations to achieve its goal. mod cat; mod debugdata; mod list_tracked_files; pub use cat::{cat, CatOutput}; pub use debugdata::{debug_data, DebugDataKind}; pub use list_tracked_files::Dirstate; pub use list_tracked_files::{list_rev_tracked_files, FilesForRev};