##// END OF EJS Templates
revset: make descendants() lazier...
revset: make descendants() lazier Previously descendants() would force the provided subset to become a set. In the case of revsets like '(%ld::) - (%ld)' (as used by histedit) this would force the '- (%ld)' set to be evaluated, which produced a set containing every commit in the repo (except %ld). This takes 0.6s on large repos. This changes descendants to trust the subset to implement __contains__ efficiently, which improves the above revset to 0.16s. Shaving 0.4 seconds off of histedit. revset #27: (20000::) - (20000) 0) obsolete feature not enabled but 54243 markers found! ! wall 0.023640 comb 0.020000 user 0.020000 sys 0.000000 (best of 100) 1) obsolete feature not enabled but 54243 markers found! ! wall 0.019589 comb 0.020000 user 0.020000 sys 0.000000 (best of 100) This commit removes the final revset related perf hotspot from histedit. Combined with the previous two patches, they shave a little over 3 seconds off histedit on large repos.

File last commit:

r22355:731b2a90 default
r22449:da05fe01 default
Show More
test-ancestor.py.out
48 lines | 1.3 KiB | text/plain | TextLexer
/ tests / test-ancestor.py.out
% ancestors of [] and not of [1]
[]
% ancestors of [] and not of []
[]
% ancestors of [12] and not of []
[0, 1, 2, 4, 6, 7, 9, 12]
% ancestors of [0] and not of [0]
[]
% ancestors of [4, 5, 6] and not of [6, 5, 4]
[]
% ancestors of [-1] and not of [12]
[]
% ancestors of [12] and not of [-1]
[0, 1, 2, 4, 6, 7, 9, 12]
% ancestors of [12] and not of [9]
[12]
% ancestors of [9] and not of [12]
[]
% ancestors of [12, 9] and not of [7]
[6, 9, 12]
% ancestors of [7, 6] and not of [12]
[]
% ancestors of [10] and not of [11, 12]
[5, 10]
% ancestors of [11] and not of [10]
[3, 7, 11]
% ancestors of [11] and not of [10, 12]
[3, 11]
% ancestors of [12] and not of [10]
[6, 7, 9, 12]
% ancestors of [12] and not of [11]
[6, 9, 12]
% ancestors of [10, 11, 12] and not of [13]
[0, 1, 2, 3, 4, 5, 6, 7, 9, 10, 11, 12]
% ancestors of [13] and not of [10, 11, 12]
[8, 13]
% lazy ancestor set for [], stoprev = 0, inclusive = False
[]
% lazy ancestor set for [11, 13], stoprev = 0, inclusive = False
[7, 8, 3, 4, 1, 0]
% lazy ancestor set for [1, 3], stoprev = 0, inclusive = False
[1, 0]
% lazy ancestor set for [11, 13], stoprev = 0, inclusive = True
[11, 13, 7, 8, 3, 4, 1, 0]
% lazy ancestor set for [11, 13], stoprev = 6, inclusive = False
[7, 8]
% lazy ancestor set for [11, 13], stoprev = 6, inclusive = True
[11, 13, 7, 8]