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

r38032:e5d2248d default
r39494:35ecaa99 default
Show More
distribution.xml
19 lines | 805 B | application/xml | XmlLexer
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<installer-gui-script minSpecVersion="1">
<title>Mercurial SCM</title>
<organization>org.mercurial-scm</organization>
<options customize="never" require-scripts="false" rootVolumeOnly="true" />
<welcome file="Welcome.html" mime-type="text/html" />
<license file="../../../COPYING" mime-type="text/plain" />
<readme file="Readme.html" mime-type="text/html" />
<pkg-ref id="org.mercurial-scm.mercurial"
version="0"
auth="root"
onConclusion="none">mercurial.pkg</pkg-ref>
<choices-outline>
<line choice="org.mercurial-scm.mercurial"/>
</choices-outline>
<choice id="org.mercurial-scm.mercurial" visible="false">
<pkg-ref id="org.mercurial-scm.mercurial"/>
</choice>
</installer-gui-script>