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