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>"""