Mercurial > public > mercurial-scm > hg-stable
diff mercurial/changelog.py @ 39229:45e05d39d9ce
pycompat: wrap xrange for py2 to provide efficient __contains__
The C implementation of xrange in Python 2 provides a O(n) membership
test, which is noticable on pull-based clones of large repositories.
Avoid this by providing a wrapper class with O(1) membership test based
on the edges of the range.
Differential Revision: https://phab.mercurial-scm.org/D4313
author | Joerg Sonnenberger <joerg@bec.de> |
---|---|
date | Fri, 17 Aug 2018 00:51:46 +0200 |
parents | 13a1901176f1 |
children | 0a5b20c107a6 |
line wrap: on
line diff
--- a/mercurial/changelog.py Mon Aug 20 09:48:08 2018 -0700 +++ b/mercurial/changelog.py Fri Aug 17 00:51:46 2018 +0200 @@ -556,8 +556,8 @@ if revs is not None: if revs: assert revs[-1] + 1 == rev - revs = pycompat.xrange(revs[0], rev + 1) + revs = pycompat.membershiprange(revs[0], rev + 1) else: - revs = pycompat.xrange(rev, rev + 1) + revs = pycompat.membershiprange(rev, rev + 1) transaction.changes['revs'] = revs return node