##// END OF EJS Templates
match: improve includematcher.visitchildrenset to be much faster and cached...
match: improve includematcher.visitchildrenset to be much faster and cached This improves the speed of visitchildrenset considerably, especially when there are complicated matchers involved that may have many entries in _dirs or _parents. Unfortunately the benchmark isn't easily upstreamed due to its reliance on https://github.com/vstinner/perf (primarily due to the conflict when importing it if I were to contribute the benchmark as contrib/matcherbenchmarks.py) instead of asv or some other perf measurement system. To describe the benchmark briefly: I generated an includematcher of either 5 or 3500 "rootfilesin:prefix1/prefix2/prefix3/<randomsubdirs, 1-8 levels deep>" items in the 'setup' function, and then called `im.visitchildrenset('prefix1/prefix2')` in the 'stmt' function in perf.timeit. For the set of 5: - before: 15.3 us +- 2.9 us - after: 1.59 us +- 0.02 us For the set of 3500: - before: 3.90 ms +- 0.10 ms - after: 3.15 us +- 0.09 us (note the m->u change) Differential Revision: https://phab.mercurial-scm.org/D4351
Kyle Lippincott -
r39494:35ecaa99 default
Show More
Name Size Modified Last Commit Author
/ contrib
benchmarks
chg
docker
fuzz
hgsh
packaging
plan9
python-zstandard
vagrant
vim
win32
wix
Makefile.python Loading ...
all-revsets.txt Loading ...
asv.conf.json Loading ...
base-revsets.txt Loading ...
bash_completion Loading ...
bdiff-torture.py Loading ...
byteify-strings.py Loading ...
casesmash.py Loading ...
catapipe.py Loading ...
check-code.py Loading ...
check-commit Loading ...
check-config.py Loading ...
check-py3-compat.py Loading ...
clang-format-ignorelist Loading ...
debugcmdserver.py Loading ...
debugshell.py Loading ...
dirstatenonnormalcheck.py Loading ...
dumprevlog Loading ...
editmerge Loading ...
editmergeps.bat Loading ...
editmergeps.ps1 Loading ...
genosxversion.py Loading ...
hg-ssh Loading ...
hg-test-mode.el Loading ...
hgclient.py Loading ...
hgk Loading ...
hgperf Loading ...
hgweb.fcgi Loading ...
hgweb.wsgi Loading ...
import-checker.py Loading ...
logo-droplets.svg Loading ...
memory.py Loading ...
mercurial.el Loading ...
mq.el Loading ...
perf.py Loading ...
phabricator.py Loading ...
pylintrc Loading ...
python-hook-examples.py Loading ...
python3-ratchet.py Loading ...
python3-whitelist Loading ...
relnotes Loading ...
revsetbenchmarks.py Loading ...
showstack.py Loading ...
simplemerge Loading ...
synthrepo.py Loading ...
tcsh_completion Loading ...
tcsh_completion_build.sh Loading ...
undumprevlog Loading ...
xml.rnc Loading ...
zsh_completion Loading ...