Mercurial > hg
view tests/test-hgweb-raw.t @ 16414:e8d37b78acfb
parsers: use base-16 trie for faster node->rev mapping
This greatly speeds up node->rev lookups, with results that are
often user-perceptible: for instance, "hg --time log" of the node
associated with rev 1000 on a linux-2.6 repo improves from 0.3
seconds to 0.03. I have not found any instances of slowdowns.
The new perfnodelookup command in contrib/perf.py demonstrates the
speedup more dramatically, since it performs no I/O. For a single
lookup, the new code is about 40x faster.
These changes also prepare the ground for the possibility of further
improving the performance of prefix-based node lookups.
author | Bryan O'Sullivan <bryano@fb.com> |
---|---|
date | Thu, 12 Apr 2012 14:05:59 -0700 |
parents | 0eefd118f27e |
children | abbabbbe4ec2 |
line wrap: on
line source
$ "$TESTDIR/hghave" serve || exit 80 Test raw style of hgweb $ hg init test $ cd test $ mkdir sub $ cat >'sub/some "text".txt' <<ENDSOME > This is just some random text > that will go inside the file and take a few lines. > It is very boring to read, but computers don't > care about things like that. > ENDSOME $ hg add 'sub/some "text".txt' warning: filename contains '"', which is reserved on Windows: 'sub/some "text".txt' $ hg commit -d "1 0" -m "Just some text" $ hg serve -p $HGPORT -A access.log -E error.log -d --pid-file=hg.pid $ cat hg.pid >> $DAEMON_PIDS $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/?f=a23bf1310f6e;file=sub/some%20%22text%22.txt;style=raw' content-type content-length content-disposition) >getoutput.txt $ while kill `cat hg.pid` 2>/dev/null; do true; done $ cat getoutput.txt 200 Script output follows content-type: application/binary content-length: 157 content-disposition: inline; filename="some \"text\".txt" This is just some random text that will go inside the file and take a few lines. It is very boring to read, but computers don't care about things like that. $ cat access.log error.log 127.0.0.1 - - [*] "GET /?f=a23bf1310f6e;file=sub/some%20%22text%22.txt;style=raw HTTP/1.1" 200 - (glob) $ rm access.log error.log $ hg serve -p $HGPORT -A access.log -E error.log -d --pid-file=hg.pid \ > --config web.guessmime=True $ cat hg.pid >> $DAEMON_PIDS $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/?f=a23bf1310f6e;file=sub/some%20%22text%22.txt;style=raw' content-type content-length content-disposition) >getoutput.txt $ while kill `cat hg.pid` 2>/dev/null; do true; done $ cat getoutput.txt 200 Script output follows content-type: text/plain; charset="ascii" content-length: 157 content-disposition: inline; filename="some \"text\".txt" This is just some random text that will go inside the file and take a few lines. It is very boring to read, but computers don't care about things like that. $ cat access.log error.log 127.0.0.1 - - [*] "GET /?f=a23bf1310f6e;file=sub/some%20%22text%22.txt;style=raw HTTP/1.1" 200 - (glob)