##// END OF EJS Templates
dirstate-tree: Fold "tracked descendants" counter update in main walk...
dirstate-tree: Fold "tracked descendants" counter update in main walk For the purpose of implementing `has_tracked_dir` (which means "has tracked descendants) without an expensive sub-tree traversal, we maintaing a counter of tracked descendants on each "directory" node of the tree-shaped dirstate. Before this changeset, mutating or inserting a node at a given path would involve: * Walking the tree from root through ancestors to find the node or the spot where to insert it * Looking at the previous node if any to decide what counter update is needed * Performing any node mutation * Walking the tree *again* to update counters in ancestor nodes When profiling `hg status` on a large repo, this second walk takes times while loading a the dirstate from disk. It turns out we have enough information to decide before he first tree walk what counter update is needed. This changeset merges the two walks, gaining ~10% of the total time for `hg update` (in the same hyperfine benchmark as the previous changeset). --- Profiling was done by compiling with this `.cargo/config`: [profile.release] debug = true then running with: py-spy record -r 500 -n -o /tmp/hg.json --format speedscope -- \ ./hg status -R $REPO --config experimental.dirstate-tree.in-memory=1 then visualizing the recorded JSON file in https://www.speedscope.app/ Differential Revision: https://phab.mercurial-scm.org/D10554

File last commit:

r46277:57b5452a default
r47890:7109a388 default
Show More
Cargo.toml
28 lines | 819 B | text/plain | TOMLLexer
Gregory Szorc
hgcli: add stub PyOxidizer project...
r45128 [package]
name = "hgcli"
version = "0.1.0"
build = "build.rs"
authors = ["Gregory Szorc <gregory.szorc@gmail.com>"]
edition = "2018"
Gregory Szorc
hgcli: customize for Mercurial...
r45129 license = "GPL-2.0"
readme = "README.md"
Gregory Szorc
hgcli: add stub PyOxidizer project...
r45128
Gregory Szorc
hgcli: customize for Mercurial...
r45129 [[bin]]
name = "hg"
path = "src/main.rs"
Gregory Szorc
hgcli: add stub PyOxidizer project...
r45128
[dependencies]
jemallocator-global = { version = "0.3", optional = true }
Gregory Szorc
pyoxidizer: produce working Python 3 Windows installers (issue6366)...
r46277
[dependencies.pyembed]
git = "https://github.com/indygreg/PyOxidizer.git"
rev = "4697fb25918dfad6dc73288daeea501063963a08"
default-features = false
Gregory Szorc
hgcli: add stub PyOxidizer project...
r45128
[features]
default = ["build-mode-pyoxidizer-exe"]
jemalloc = ["jemallocator-global", "pyembed/jemalloc"]
build-mode-pyoxidizer-exe = ["pyembed/build-mode-pyoxidizer-exe"]
build-mode-prebuilt-artifacts = ["pyembed/build-mode-prebuilt-artifacts"]
cpython-link-unresolved-static = ["pyembed/cpython-link-unresolved-static"]
cpython-link-default = ["pyembed/cpython-link-default"]