Mercurial > public > mercurial-scm > hg-stable
comparison mercurial/graphmod.py @ 14088:e83ced8b6464
graphlog: use a set for inclusion test
This makes a big difference in performance in the special case where all
revisions are being graphed.
author | Patrick Mezard <pmezard@gmail.com> |
---|---|
date | Sat, 30 Apr 2011 19:42:00 +0200 |
parents | f3d585c9b042 |
children | 03e1c2d35c6a |
comparison
equal
deleted
inserted
replaced
14087:f3d585c9b042 | 14088:e83ced8b6464 |
---|---|
34 | 34 |
35 cl = repo.changelog | 35 cl = repo.changelog |
36 lowestrev = min(revs) | 36 lowestrev = min(revs) |
37 gpcache = {} | 37 gpcache = {} |
38 | 38 |
39 knownrevs = set(revs) | |
39 for rev in revs: | 40 for rev in revs: |
40 ctx = repo[rev] | 41 ctx = repo[rev] |
41 parents = sorted(set([p.rev() for p in ctx.parents() if p.rev() in revs])) | 42 parents = sorted(set([p.rev() for p in ctx.parents() |
43 if p.rev() in knownrevs])) | |
42 mpars = [p.rev() for p in ctx.parents() if | 44 mpars = [p.rev() for p in ctx.parents() if |
43 p.rev() != nullrev and p.rev() not in parents] | 45 p.rev() != nullrev and p.rev() not in parents] |
44 | 46 |
45 for mpar in mpars: | 47 for mpar in mpars: |
46 gp = gpcache.get(mpar) or grandparent(cl, lowestrev, revs, mpar) | 48 gp = gpcache.get(mpar) or grandparent(cl, lowestrev, revs, mpar) |