# HG changeset patch # User Pierre-Yves David # Date 1435905978 25200 # Node ID d50677c3bf44db9738231278504bc2ee2642dc82 # Parent 2ca116614cfc2db05836a1f243a484120457485f revset: prefetch method in "parents" As already demonstrated, saving attribute lookup gains us some minor but noticeable performance improvements. revset #0: parents(all()) before) 0.024169 after ) 0.022756 94% diff -r 2ca116614cfc -r d50677c3bf44 mercurial/revset.py --- a/mercurial/revset.py Wed Jul 01 13:14:03 2015 -0700 +++ b/mercurial/revset.py Thu Jul 02 23:46:18 2015 -0700 @@ -1478,11 +1478,13 @@ 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