Mercurial > public > mercurial-scm > hg-stable
diff contrib/perf.py @ 37890:8fb9985382be
pycompat: export queue module instead of symbols in module (API)
Previously, pycompat and util re-exported individual symbols from the
queue module. This had the side-effect of forcing the loading of the
queue module whenever pycompat/util was imported.
These symbols aren't used very often. So importing the module to
get a handle on the symbols is wasteful.
This commit changes pycompat so it no longer exports the individual
symbols in the queue module. Instead, we make the imported module
a "public" symbol. We drop the individual symbol aliases from the
util module. All consumers are updated to use pycompat.queue.* instead.
This change makes 300 invocations of `hg log -r. -T '{rev}\n'` a little
faster:
before: 18.44s
after: 17.87s
Differential Revision: https://phab.mercurial-scm.org/D3441
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Sat, 05 May 2018 18:35:16 -0700 |
parents | 5bcd5859b505 |
children | 1b121cc680f2 |
line wrap: on
line diff
--- a/contrib/perf.py Sat May 05 18:41:51 2018 -0700 +++ b/contrib/perf.py Sat May 05 18:35:16 2018 -0700 @@ -71,6 +71,16 @@ import inspect getargspec = inspect.getargspec +try: + # 4.7+ + queue = pycompat.queue.Queue +except (AttributeError, ImportError): + # <4.7. + try: + queue = pycompat.queue + except (AttributeError, ImportError): + queue = util.queue + # for "historical portability": # define util.safehasattr forcibly, because util.safehasattr has been # available since 1.9.3 (or 94b200a11cf7) @@ -1029,7 +1039,7 @@ else: mdiff.textdiff(*pair) else: - q = util.queue() + q = queue() for i in xrange(threads): q.put(None) ready = threading.Condition()