# HG changeset patch # User Augie Fackler # Date 1534879546 14400 # Node ID 5e78c100a21586dfdc622a86537c0a0231652e1d # Parent 76b58f240821ba242fb68fb251eccf78e56881d4 hg: wrap the highest layer in the `hg` script possible in trace event This should help us have a better idea of what "interpreter startup costs" look like. This does omit the HGUNICODEPEDANTRY block and the LIBDIR dancing to set up sys.path, but the former is usually off and the latter is unavoidable and should be very fast. If we get worried about those cases we can consider open-coding the tracing logic here. Differential Revision: https://phab.mercurial-scm.org/D4346 diff -r 76b58f240821 -r 5e78c100a215 hg --- a/hg Wed Sep 12 12:01:32 2018 -0700 +++ b/hg Tue Aug 21 15:25:46 2018 -0400 @@ -27,15 +27,17 @@ libdir = os.path.abspath(libdir) sys.path.insert(0, libdir) -# enable importing on demand to reduce startup time -try: - if sys.version_info[0] < 3 or sys.version_info >= (3, 6): - import hgdemandimport; hgdemandimport.enable() -except ImportError: - sys.stderr.write("abort: couldn't find mercurial libraries in [%s]\n" % - ' '.join(sys.path)) - sys.stderr.write("(check your install and PYTHONPATH)\n") - sys.exit(-1) +from hgdemandimport import tracing +with tracing.log('hg script'): + # enable importing on demand to reduce startup time + try: + if sys.version_info[0] < 3 or sys.version_info >= (3, 6): + import hgdemandimport; hgdemandimport.enable() + except ImportError: + sys.stderr.write("abort: couldn't find mercurial libraries in [%s]\n" % + ' '.join(sys.path)) + sys.stderr.write("(check your install and PYTHONPATH)\n") + sys.exit(-1) -from mercurial import dispatch -dispatch.run() + from mercurial import dispatch + dispatch.run()