comparison mercurial/changelog.py @ 39201: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
comparison
equal deleted inserted replaced
39197:d859b48730b8 39201:45e05d39d9ce
554 *args, **kwargs) 554 *args, **kwargs)
555 revs = transaction.changes.get('revs') 555 revs = transaction.changes.get('revs')
556 if revs is not None: 556 if revs is not None:
557 if revs: 557 if revs:
558 assert revs[-1] + 1 == rev 558 assert revs[-1] + 1 == rev
559 revs = pycompat.xrange(revs[0], rev + 1) 559 revs = pycompat.membershiprange(revs[0], rev + 1)
560 else: 560 else:
561 revs = pycompat.xrange(rev, rev + 1) 561 revs = pycompat.membershiprange(rev, rev + 1)
562 transaction.changes['revs'] = revs 562 transaction.changes['revs'] = revs
563 return node 563 return node