hg: wrap the highest layer in the `hg` script possible in trace event
authorAugie Fackler <augie@google.com>
Tue, 21 Aug 2018 15:25:46 -0400
changeset 39592 5e78c100a215
parent 39591 76b58f240821
child 39593 c8514f858788
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
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()