Mercurial > hg-stable
view tests/test-ancestor.py.out @ 39553:bdb177923291
ancestor: optimize _lazyancestorsiter() for contiguous chains
If there's no revision between p1 and current, p1 must be the next revision
to visit. In this case, we can get around the overhead of heappop/push
operations. Note that this is faster than using heapreplace().
'current - p1 == 1' could be generalized as 'all(r not in seen for r in
xrange(p1, current)', but Python is too slow to do such thing.
author | Yuya Nishihara <yuya@tcha.org> |
---|---|
date | Mon, 10 Sep 2018 21:58:59 +0900 |
parents | 7eadc9407867 |
children | d097dd0afc19 |
line wrap: on
line source
% lazy ancestor set for [], stoprev = 0, inclusive = False membership: [] iteration: [] % lazy ancestor set for [11, 13], stoprev = 0, inclusive = False membership: [7, 8, 3, 4, 1, 0] iteration: [8, 7, 4, 3, 2, 1, 0] % lazy ancestor set for [1, 3], stoprev = 0, inclusive = False membership: [1, 0] iteration: [1, 0] % lazy ancestor set for [11, 13], stoprev = 0, inclusive = True membership: [11, 13, 7, 8, 3, 4, 1, 0] iteration: [13, 11, 8, 7, 4, 3, 2, 1, 0] % lazy ancestor set for [11, 13], stoprev = 6, inclusive = False membership: [7, 8] iteration: [8, 7] % lazy ancestor set for [11, 13], stoprev = 6, inclusive = True membership: [11, 13, 7, 8] iteration: [13, 11, 8, 7] % lazy ancestor set for [11, 13], stoprev = 11, inclusive = True membership: [11, 13] iteration: [13, 11] % lazy ancestor set for [11, 13], stoprev = 12, inclusive = True membership: [13] iteration: [13] % lazy ancestor set for [10, 1], stoprev = 0, inclusive = True membership: [2, 10, 4, 5, 0, 1] iteration: [10, 5, 4, 2, 1, 0]