tests/test-help
author mason@suse.com
Thu, 01 Sep 2005 07:34:53 -0700
changeset 1183 d9e85a75dbda
parent 896 01215ad04283
permissions -rwxr-xr-x
Optimize dirstate walking This generally cuts the time for hg status/diff in half, from 2s down to 1s. The main parts I'm trying to optimize are: 1) os.walk stats every file. dirstate.changes then stats every file again. 2) os.walk yields every file and subdir to dirstate.traverse who yields every file and everything in the dirstate map. dirstate.walk then filters this mass and yields every file to the caller. There should be fewer steps in here, and fewer duplicate strings yielded. 3) dirstate.walk runs util.unique on the results from dirstate.traverse, even though it is also passing things through dirstate.seen to look for duplicates. I've turned os.walk into something hg specific that takes all the dirstate ignore and matching rules into account. The new function also takes an function arg (statmatch()) the caller supplies to help filter out files it doesn't care about. dirstate.changes uses this to update state for each file, avoiding the second stat call. dirstate.walk is changed to turn the match function it is passed into a statmatch function. The only real difference is that a statmatch function takes the stat data as a second parameter. It now calls dirstate.walkhelper, who requires a statmatch function to be passed. This fails test-walk, but right now I think this is from a sorting error fixed by this patch. Index: crew/mercurial/dirstate.py ===================================================================
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
544
3d4d5f2aba9a Remove bashisms and use /bin/sh instead of /bin/bash.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 429
diff changeset
     1
#!/bin/sh
331
55f63f3b6a54 Add a simple testing framework
mpm@selenic.com
parents:
diff changeset
     2
849
8933ef744325 Further help improvements:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 814
diff changeset
     3
hg
8933ef744325 Further help improvements:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 814
diff changeset
     4
hg -q
596
9a8daeff0ffa A bunch of parsing/help updates
mpm@selenic.com
parents: 547
diff changeset
     5
hg help
423
25afb21d97ba Support for 'hg --version'. setup.py stores version from hg repository.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 350
diff changeset
     6
hg -q help
331
55f63f3b6a54 Add a simple testing framework
mpm@selenic.com
parents:
diff changeset
     7
hg add -h
596
9a8daeff0ffa A bunch of parsing/help updates
mpm@selenic.com
parents: 547
diff changeset
     8
hg add --skjdfks
331
55f63f3b6a54 Add a simple testing framework
mpm@selenic.com
parents:
diff changeset
     9
hg help diff
849
8933ef744325 Further help improvements:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 814
diff changeset
    10
hg help status
8933ef744325 Further help improvements:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 814
diff changeset
    11
hg -q help status
331
55f63f3b6a54 Add a simple testing framework
mpm@selenic.com
parents:
diff changeset
    12
hg help foo
849
8933ef744325 Further help improvements:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 814
diff changeset
    13
hg skjdfks
331
55f63f3b6a54 Add a simple testing framework
mpm@selenic.com
parents:
diff changeset
    14
423
25afb21d97ba Support for 'hg --version'. setup.py stores version from hg repository.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 350
diff changeset
    15
exit 0