##// END OF EJS Templates
smartset: use native set operations as fast paths...
smartset: use native set operations as fast paths For set operations like "&" and "-", where we know both basesets have their sets ready, and the first set is sorted, use the native Python set operations as a fast path. Note: "+" is not optimized as that will break the ordering. This leads to noticeable improvements on performance: revset | before | after | delta ---------------------------------------------------------------- draft() & draft() & draft() & draft() | 776 | 477 | -39% draft() + draft() + draft() + draft() | 2849 | 2864 | draft() - draft() + draft() - draft() | 943 | 240 | -75% draft() - draft() - draft() - draft() | 557 | 197 | -64% (time measured in microseconds)

File last commit:

r29014:f1ca2496 stable
r31020:2d1bf840 default
Show More
test-issue4074.t
29 lines | 506 B | text/troff | Tads3Lexer
Matt Mackall
bdiff: balance recursion to avoid quadratic behavior (issue4704)...
r29014 #require no-pure
A script to generate nasty diff worst-case scenarios:
$ cat > s.py <<EOF
> import random
> for x in xrange(100000):
> print
> if random.randint(0, 100) >= 50:
> x += 1
> print hex(x)
> EOF
$ hg init a
$ cd a
Check in a big file:
$ python ../s.py > a
$ hg ci -qAm0
Modify it:
$ python ../s.py > a
Time a check-in, should never take more than 10 seconds user time:
$ hg ci --time -m1
time: real .* secs .user [0-9][.].* sys .* (re)