Skip to content
Snippets Groups Projects
Kyle Lippincott's avatar
Kyle Lippincott authored
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
35ecaa99
History
Name Last commit Last update