Mercurial > public > mercurial-scm > hg
comparison mercurial/pycompat.py @ 37844: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 | 1cb54e6193a6 |
children | aac4be30e250 |
comparison
equal
deleted
inserted
replaced
37843:670eb4fa1b86 | 37844:8fb9985382be |
---|---|
21 | 21 |
22 if not ispy3: | 22 if not ispy3: |
23 import cookielib | 23 import cookielib |
24 import cPickle as pickle | 24 import cPickle as pickle |
25 import httplib | 25 import httplib |
26 import Queue as _queue | 26 import Queue as queue |
27 import SocketServer as socketserver | 27 import SocketServer as socketserver |
28 import xmlrpclib | 28 import xmlrpclib |
29 | 29 |
30 from .thirdparty.concurrent import futures | 30 from .thirdparty.concurrent import futures |
31 | 31 |
34 else: | 34 else: |
35 import concurrent.futures as futures | 35 import concurrent.futures as futures |
36 import http.cookiejar as cookielib | 36 import http.cookiejar as cookielib |
37 import http.client as httplib | 37 import http.client as httplib |
38 import pickle | 38 import pickle |
39 import queue as _queue | 39 import queue as queue |
40 import socketserver | 40 import socketserver |
41 import xmlrpc.client as xmlrpclib | 41 import xmlrpc.client as xmlrpclib |
42 | 42 |
43 def future_set_exception_info(f, exc_info): | 43 def future_set_exception_info(f, exc_info): |
44 f.set_exception(exc_info[0]) | 44 f.set_exception(exc_info[0]) |
45 | |
46 empty = _queue.Empty | |
47 queue = _queue.Queue | |
48 | 45 |
49 def identity(a): | 46 def identity(a): |
50 return a | 47 return a |
51 | 48 |
52 if ispy3: | 49 if ispy3: |