Mercurial > public > mercurial-scm > hg
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 |