Mercurial > public > mercurial-scm > hg
comparison mercurial/revset.py @ 25716:d50677c3bf44
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%
author | Pierre-Yves David <pierre-yves.david@fb.com> |
---|---|
date | Thu, 02 Jul 2015 23:46:18 -0700 |
parents | b7f53c474e2c |
children | 5e1b0739611c |
comparison
equal
deleted
inserted
replaced
25713:2ca116614cfc | 25716:d50677c3bf44 |
---|---|
1476 if x is None: | 1476 if x is None: |
1477 ps = set(p.rev() for p in repo[x].parents()) | 1477 ps = set(p.rev() for p in repo[x].parents()) |
1478 else: | 1478 else: |
1479 ps = set() | 1479 ps = set() |
1480 cl = repo.changelog | 1480 cl = repo.changelog |
1481 up = ps.update | |
1482 parentrevs = cl.parentrevs | |
1481 for r in getset(repo, fullreposet(repo), x): | 1483 for r in getset(repo, fullreposet(repo), x): |
1482 if r is None: | 1484 if r is None: |
1483 ps.update(p.rev() for p in repo[r].parents()) | 1485 up(p.rev() for p in repo[r].parents()) |
1484 else: | 1486 else: |
1485 ps.update(cl.parentrevs(r)) | 1487 up(parentrevs(r)) |
1486 ps -= set([node.nullrev]) | 1488 ps -= set([node.nullrev]) |
1487 return subset & ps | 1489 return subset & ps |
1488 | 1490 |
1489 def _phase(repo, subset, target): | 1491 def _phase(repo, subset, target): |
1490 """helper to select all rev in phase <target>""" | 1492 """helper to select all rev in phase <target>""" |