[PATCH evolve-ext-V2] inhibit: improve performance of transaction wrapping

Laurent Charignon lcharignon at fb.com
Mon Jun 15 11:55:57 CDT 2015


# HG changeset patch
# User Laurent Charignon <lcharignon at fb.com>
# Date 1434219267 25200
#      Sat Jun 13 11:14:27 2015 -0700
# Node ID 9f45d300deb274d104b40759282a3b98879f1b5b
# Parent  043e5ca9322fc92cd90b9ff3dc462bcbfbd3c095
inhibit: improve performance of transaction wrapping

Before this patch, transaction wrapping was the most expensive part of inhibit
computation wise. This patch changes the revset that we use in the transaction
wrapping to make it ~50x faster to compute:


revset #0: obsolete() - hidden()
0) wall 0.000214 comb 0.000000 user 0.000000 sys 0.000000 (best of 11209)

vs

revset #0: (not hidden()) and obsolete()
0) wall 0.010965 comb 0.010000 user 0.010000 sys 0.000000 (best of 237)

To do this test I imported Pierre-Yves' change to makes sure that we use
native phase computation.

diff --git a/hgext/inhibit.py b/hgext/inhibit.py
--- a/hgext/inhibit.py
+++ b/hgext/inhibit.py
@@ -172,7 +172,7 @@
     def inhibitposttransaction(transaction):
         # At the end of the transaction we catch all the new visible and
         # obsolete commit to inhibit them
-        visibleobsolete = repo.revs('(not hidden()) and obsolete()')
+        visibleobsolete = repo.revs('obsolete() - hidden()')
         ignoreset = set(getattr(repo, '_rebaseset', []))
         visibleobsolete = list(r for r in visibleobsolete if r not in ignoreset)
         if visibleobsolete:


More information about the Mercurial-devel mailing list