D1499: hbisect: use a defaultdict to avoid large allocations for a large changelogs
dsp (David Soria Parra)
phabricator at mercurial-scm.org
Thu Nov 23 22:24:08 UTC 2017
dsp created this revision.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.
REVISION SUMMARY
We can avoid a SPACE(len(changelog)) allocation by using a defaultdict.
TEST PLAN
python run-tests.py test-bisect*
REPOSITORY
rHG Mercurial
REVISION DETAIL
https://phab.mercurial-scm.org/D1499
AFFECTED FILES
mercurial/hbisect.py
CHANGE DETAILS
diff --git a/mercurial/hbisect.py b/mercurial/hbisect.py
--- a/mercurial/hbisect.py
+++ b/mercurial/hbisect.py
@@ -38,7 +38,7 @@
def buildancestors(bad, good):
badrev = min([changelog.rev(n) for n in bad])
- ancestors = [None] * (len(changelog) + 1)
+ ancestors = collections.defaultdict(lambda: None)
for rev in repo.revs("descendants(%ln) - ancestors(%ln)", good, good):
ancestors[rev] = []
if ancestors[badrev] is None:
To: dsp, #hg-reviewers
Cc: mercurial-devel
More information about the Mercurial-devel
mailing list