Mercurial > hg
annotate tests/test-hybridencode.py @ 16363:2cdd7e63211b
parsers: incrementally parse the revlog index in C
We only parse entries in a revlog index file when they are actually
needed, and cache them when first requested.
This makes a huge difference to performance on large revlogs when
accessing the tip revision or performing a handful of numeric lookups
(very common cases). For instance, "hg --time tip --template {node}"
on a tree with 300,000 revs takes 0.15 before, 0.02 after.
Even for revlog-intensive operations (e.g. running "hg log" to
completion), the lazy approach is about 1% faster than the eager
parse_index2.
author | Bryan O'Sullivan <bryano@fb.com> |
---|---|
date | Thu, 05 Apr 2012 13:00:35 -0700 |
parents | 4c50552fc9bc |
children | 81b115385bc7 |
rev | line source |
---|---|
7275
c00cdac22d3c
add new test-hybridencode.py
Adrian Buehlmann <adrian@cadifra.com>
parents:
diff
changeset
|
1 from mercurial import store |
c00cdac22d3c
add new test-hybridencode.py
Adrian Buehlmann <adrian@cadifra.com>
parents:
diff
changeset
|
2 |
12687
34d8247a4595
store: encode first period or space in filenames (issue1713)
Adrian Buehlmann <adrian@cadifra.com>
parents:
8659
diff
changeset
|
3 auxencode = lambda f: store._auxencode(f, True) |
34d8247a4595
store: encode first period or space in filenames (issue1713)
Adrian Buehlmann <adrian@cadifra.com>
parents:
8659
diff
changeset
|
4 hybridencode = lambda f: store._hybridencode(f, auxencode) |
34d8247a4595
store: encode first period or space in filenames (issue1713)
Adrian Buehlmann <adrian@cadifra.com>
parents:
8659
diff
changeset
|
5 |
34d8247a4595
store: encode first period or space in filenames (issue1713)
Adrian Buehlmann <adrian@cadifra.com>
parents:
8659
diff
changeset
|
6 enc = hybridencode # used for 'dotencode' repo format |
7275
c00cdac22d3c
add new test-hybridencode.py
Adrian Buehlmann <adrian@cadifra.com>
parents:
diff
changeset
|
7 |
c00cdac22d3c
add new test-hybridencode.py
Adrian Buehlmann <adrian@cadifra.com>
parents:
diff
changeset
|
8 def show(s): |
c00cdac22d3c
add new test-hybridencode.py
Adrian Buehlmann <adrian@cadifra.com>
parents:
diff
changeset
|
9 print "A = '%s'" % s |
c00cdac22d3c
add new test-hybridencode.py
Adrian Buehlmann <adrian@cadifra.com>
parents:
diff
changeset
|
10 print "B = '%s'" % enc(s) |
c00cdac22d3c
add new test-hybridencode.py
Adrian Buehlmann <adrian@cadifra.com>
parents:
diff
changeset
|
11 print |
c00cdac22d3c
add new test-hybridencode.py
Adrian Buehlmann <adrian@cadifra.com>
parents:
diff
changeset
|
12 |
c00cdac22d3c
add new test-hybridencode.py
Adrian Buehlmann <adrian@cadifra.com>
parents:
diff
changeset
|
13 show('data/aux.bla/bla.aux/prn/PRN/lpt/com3/nul/coma/foo.NUL/normal.c.i') |
c00cdac22d3c
add new test-hybridencode.py
Adrian Buehlmann <adrian@cadifra.com>
parents:
diff
changeset
|
14 |
8659
1a6d702e059d
test-hybridencode: break long string literals
Martin Geisler <mg@lazybytes.net>
parents:
7515
diff
changeset
|
15 show('data/AUX/SECOND/X.PRN/FOURTH/FI:FTH/SIXTH/SEVENTH/EIGHTH/NINETH/' |
1a6d702e059d
test-hybridencode: break long string literals
Martin Geisler <mg@lazybytes.net>
parents:
7515
diff
changeset
|
16 'TENTH/ELEVENTH/LOREMIPSUM.TXT.i') |
1a6d702e059d
test-hybridencode: break long string literals
Martin Geisler <mg@lazybytes.net>
parents:
7515
diff
changeset
|
17 show('data/enterprise/openesbaddons/contrib-imola/corba-bc/netbeansplugin/' |
1a6d702e059d
test-hybridencode: break long string literals
Martin Geisler <mg@lazybytes.net>
parents:
7515
diff
changeset
|
18 'wsdlExtension/src/main/java/META-INF/services/org.netbeans.modules' |
1a6d702e059d
test-hybridencode: break long string literals
Martin Geisler <mg@lazybytes.net>
parents:
7515
diff
changeset
|
19 '.xml.wsdl.bindingsupport.spi.ExtensibilityElementTemplateProvider.i') |
1a6d702e059d
test-hybridencode: break long string literals
Martin Geisler <mg@lazybytes.net>
parents:
7515
diff
changeset
|
20 show('data/AUX.THE-QUICK-BROWN-FOX-JU:MPS-OVER-THE-LAZY-DOG-THE-QUICK-' |
1a6d702e059d
test-hybridencode: break long string literals
Martin Geisler <mg@lazybytes.net>
parents:
7515
diff
changeset
|
21 'BROWN-FOX-JUMPS-OVER-THE-LAZY-DOG.TXT.i') |
1a6d702e059d
test-hybridencode: break long string literals
Martin Geisler <mg@lazybytes.net>
parents:
7515
diff
changeset
|
22 show('data/Project Planning/Resources/AnotherLongDirectoryName/' |
1a6d702e059d
test-hybridencode: break long string literals
Martin Geisler <mg@lazybytes.net>
parents:
7515
diff
changeset
|
23 'Followedbyanother/AndAnother/AndThenAnExtremelyLongFileName.txt') |
1a6d702e059d
test-hybridencode: break long string literals
Martin Geisler <mg@lazybytes.net>
parents:
7515
diff
changeset
|
24 show('data/Project.Planning/Resources/AnotherLongDirectoryName/' |
1a6d702e059d
test-hybridencode: break long string literals
Martin Geisler <mg@lazybytes.net>
parents:
7515
diff
changeset
|
25 'Followedbyanother/AndAnother/AndThenAnExtremelyLongFileName.txt') |
12687
34d8247a4595
store: encode first period or space in filenames (issue1713)
Adrian Buehlmann <adrian@cadifra.com>
parents:
8659
diff
changeset
|
26 show('data/foo.../foo / /a./_. /__/.x../ bla/.FOO/something.i') |
34d8247a4595
store: encode first period or space in filenames (issue1713)
Adrian Buehlmann <adrian@cadifra.com>
parents:
8659
diff
changeset
|
27 |