# HG changeset patch # User Pierre-Yves David # Date 1667775346 18000 # Node ID b670eb3dd6c911c99b435980ed1e1dddc2c00efa # Parent efbbc2f9121e7c59deb9b16c9cd503583776b443 delta-find: use sets instead of list in the snapshot cache This seems more appropriate. diff -r efbbc2f9121e -r b670eb3dd6c9 mercurial/cext/revlog.c --- a/mercurial/cext/revlog.c Sun Nov 06 16:56:23 2022 -0500 +++ b/mercurial/cext/revlog.c Sun Nov 06 17:55:46 2022 -0500 @@ -1489,7 +1489,7 @@ } if (allvalues == NULL) { int r; - allvalues = PyList_New(0); + allvalues = PySet_New(0); if (!allvalues) { goto bail; } @@ -1500,7 +1500,7 @@ } } value = PyLong_FromSsize_t(rev); - if (PyList_Append(allvalues, value)) { + if (PySet_Add(allvalues, value)) { goto bail; } Py_CLEAR(key); diff -r efbbc2f9121e -r b670eb3dd6c9 mercurial/revlogutils/deltas.py --- a/mercurial/revlogutils/deltas.py Sun Nov 06 16:56:23 2022 -0500 +++ b/mercurial/revlogutils/deltas.py Sun Nov 06 17:55:46 2022 -0500 @@ -989,8 +989,7 @@ __slots__ = ('snapshots', '_start_rev', '_end_rev') def __init__(self): - # XXX should probably be a set ? - self.snapshots = collections.defaultdict(list) + self.snapshots = collections.defaultdict(set) self._start_rev = None self._end_rev = None @@ -1038,7 +1037,7 @@ issnapshot = revlog.issnapshot for rev in revlog.revs(start_rev, end_rev): if issnapshot(rev): - cache[deltaparent(rev)].append(rev) + cache[deltaparent(rev)].add(rev) class deltacomputer: diff -r efbbc2f9121e -r b670eb3dd6c9 tests/test-revlog-raw.py --- a/tests/test-revlog-raw.py Sun Nov 06 16:56:23 2022 -0500 +++ b/tests/test-revlog-raw.py Sun Nov 06 17:55:46 2022 -0500 @@ -466,8 +466,8 @@ print(' got: %s' % result) -snapshotmapall = {0: [6, 8, 11, 17, 19, 25], 8: [21], -1: [0, 30]} -snapshotmap15 = {0: [17, 19, 25], 8: [21], -1: [30]} +snapshotmapall = {0: {6, 8, 11, 17, 19, 25}, 8: {21}, -1: {0, 30}} +snapshotmap15 = {0: {17, 19, 25}, 8: {21}, -1: {30}} def findsnapshottest(rlog):