##// 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

File last commit:

r16556:f9262456 stable
r39494:35ecaa99 default
Show More
mkfile
37 lines | 742 B | text/plain | TextLexer
APE=/sys/src/ape
<$APE/config
PYTHON=python
PYTHONBIN=/rc/bin
SH=ape/psh
PURE=--pure
ROOT=../..
# This is slightly underhanded; Plan 9 does not support GNU gettext nor
# does it support dynamically loaded extension modules. We work around
# this by calling build_py and build_scripts directly; this avoids
# additional platform hacks in setup.py.
build:VQ:
@{
cd $ROOT
$SH -c '$PYTHON setup.py $PURE build_py build_scripts'
}
clean:VQ:
@{
cd $ROOT
$SH -c '$PYTHON setup.py $PURE clean --all'
}
install:VQ: build
@{
cd $ROOT
$SH -c '$PYTHON setup.py $PURE install \
--install-scripts $PYTHONBIN \
--skip-build \
--force'
}
mkdir -p /lib/mercurial/hgrc.d
dircp hgrc.d /lib/mercurial/hgrc.d/
cp 9diff /rc/bin/