[PATCH] revert: prefetch method in "parents"

Pierre-Yves David pierre-yves.david at ens-lyon.org
Fri Jul 3 16:52:48 UTC 2015


# HG changeset patch
# User Pierre-Yves David <pierre-yves.david at fb.com>
# Date 1435905978 25200
#      Thu Jul 02 23:46:18 2015 -0700
# Node ID 0bf809bc323ce07f94f731f62f83a98ba96eed91
# Parent  84518051bc3b851f736872df045d662de548b3c9
revert: prefetch method in "parents"

As already demonstrated, saving attribut lookup gain use some minor but
noticeable performance improvements.

revset #0: parents(all())
before) 0.024169
after ) 0.022756  94%

diff --git a/mercurial/revset.py b/mercurial/revset.py
--- a/mercurial/revset.py
+++ b/mercurial/revset.py
@@ -1476,15 +1476,17 @@ def parents(repo, subset, x):
     if x is None:
         ps = set(p.rev() for p in repo[x].parents())
     else:
         ps = set()
         cl = repo.changelog
+        up = ps.update
+        parentrevs = cl.parentrevs
         for r in getset(repo, fullreposet(repo), x):
             if r is None:
-                ps.update(p.rev() for p in repo[r].parents())
+                up(p.rev() for p in repo[r].parents())
             else:
-                ps.update(cl.parentrevs(r))
+                up(parentrevs(r))
     ps -= set([node.nullrev])
     return subset & ps
 
 def _phase(repo, subset, target):
     """helper to select all rev in phase <target>"""


More information about the Mercurial-devel mailing list