test-contrib-perf.t
397 lines
| 12.3 KiB
| text/troff
|
Tads3Lexer
/ tests / test-contrib-perf.t
|
r27315 | #require test-repo | ||
|
r27101 | |||
Set vars: | ||||
|
r29219 | $ . "$TESTDIR/helpers-testrepo.sh" | ||
|
r27101 | $ CONTRIBDIR="$TESTDIR/../contrib" | ||
|
r27309 | Prepare repo: | ||
|
r27101 | |||
|
r27309 | $ hg init | ||
|
r27101 | |||
$ echo this is file a > a | ||||
$ hg add a | ||||
$ hg commit -m first | ||||
$ echo adding to file a >> a | ||||
$ hg commit -m second | ||||
$ echo adding more to file a >> a | ||||
$ hg commit -m third | ||||
$ hg up -r 0 | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ echo merge-this >> a | ||||
$ hg commit -m merge-able | ||||
created new head | ||||
$ hg up -r 2 | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
perfstatus | ||||
|
r27309 | $ cat >> $HGRCPATH << EOF | ||
|
r27101 | > [extensions] | ||
r42181 | > perf=$CONTRIBDIR/perf.py | |||
|
r27315 | > [perf] | ||
> presleep=0 | ||||
> stub=on | ||||
> parentscount=1 | ||||
|
r27101 | > EOF | ||
r42181 | $ hg help -e perf | |||
perf extension - helper extension to measure performance | ||||
|
r27101 | |||
r42182 | Configurations | |||
============== | ||||
"perf" | ||||
------ | ||||
"all-timing" | ||||
|
r42188 | When set, additional statistics will be reported for each benchmark: best, | ||
r42182 | worst, median average. If not set only the best timing is reported | |||
(default: off). | ||||
"presleep" | ||||
|
r42188 | number of second to wait before any group of runs (default: 1) | ||
r42182 | ||||
r42551 | "pre-run" | |||
number of run to perform before starting measurement. | ||||
r42552 | "profile-benchmark" | |||
Enable profiling for the benchmarked section. (The first iteration is | ||||
benchmarked) | ||||
r42186 | "run-limits" | |||
|
r42188 | Control the number of runs each benchmark will perform. The option value | ||
r42186 | should be a list of '<time>-<numberofrun>' pairs. After each run the | |||
|
r42188 | conditions are considered in order with the following logic: | ||
r42186 | ||||
|
r42188 | If benchmark has been running for <time> seconds, and we have performed | ||
r42186 | <numberofrun> iterations, stop the benchmark, | |||
The default value is: '3.0-100, 10.0-3' | ||||
r42182 | "stub" | |||
|
r42188 | When set, benchmarks will only be run once, useful for testing (default: | ||
r42182 | off) | |||
|
r27101 | list of commands: | ||
perfaddremove | ||||
(no help text available) | ||||
perfancestors | ||||
(no help text available) | ||||
perfancestorset | ||||
(no help text available) | ||||
perfannotate (no help text available) | ||||
|
r30336 | perfbdiff benchmark a bdiff between revisions | ||
r32733 | perfbookmarks | |||
benchmark parsing bookmarks from disk to memory | ||||
|
r27101 | perfbranchmap | ||
benchmark the update of a branchmap | ||||
|
r39150 | perfbranchmapload | ||
benchmark reading the branchmap | ||||
|
r40804 | perfbranchmapupdate | ||
benchmark branchmap update from for <base> revs to <target> | ||||
revs | ||||
|
r35108 | perfbundleread | ||
Benchmark reading of bundle files. | ||||
|
r27101 | perfcca (no help text available) | ||
|
r30018 | perfchangegroupchangelog | ||
Benchmark producing a changelog group for a changegroup. | ||||
|
r27101 | perfchangeset | ||
(no help text available) | ||||
perfctxfiles (no help text available) | ||||
perfdiffwd Profile diff of working directory changes | ||||
perfdirfoldmap | ||||
r43397 | benchmap a 'dirstate._map.dirfoldmap.get()' request | |||
|
r27101 | perfdirs (no help text available) | ||
r43466 | perfdirstate benchmap the time of various distate operations | |||
|
r27101 | perfdirstatedirs | ||
r43393 | benchmap a 'dirstate.hasdir' call from an empty 'dirs' cache | |||
|
r27101 | perfdirstatefoldmap | ||
r43395 | benchmap a 'dirstate._map.filefoldmap.get()' request | |||
|
r27101 | perfdirstatewrite | ||
r43399 | benchmap the time it take to write a dirstate on disk | |||
|
r40977 | perfdiscovery | ||
benchmark discovery between local repo and the peer at given | ||||
path | ||||
|
r27101 | perffncacheencode | ||
(no help text available) | ||||
perffncacheload | ||||
(no help text available) | ||||
perffncachewrite | ||||
(no help text available) | ||||
|
r41479 | perfheads benchmark the computation of a changelog heads | ||
r42577 | perfhelper-mergecopies | |||
find statistics about potential parameters for | ||||
'perfmergecopies' | ||||
|
r40771 | perfhelper-pathcopies | ||
|
r40727 | find statistic about potential parameters for the | ||
'perftracecopies' | ||||
|
r40781 | perfignore benchmark operation related to computing ignore | ||
|
r41482 | perfindex benchmark index creation time followed by a lookup | ||
|
r39005 | perflinelogedits | ||
(no help text available) | ||||
|
r27101 | perfloadmarkers | ||
benchmark the time to parse the on-disk markers for a repo | ||||
perflog (no help text available) | ||||
perflookup (no help text available) | ||||
|
r27286 | perflrucachedict | ||
(no help text available) | ||||
|
r38715 | perfmanifest benchmark the time to read a manifest from disk and return a | ||
usable | ||||
|
r27101 | perfmergecalculate | ||
(no help text available) | ||||
r42576 | perfmergecopies | |||
measure runtime of 'copies.mergecopies' | ||||
|
r27101 | perfmoonwalk benchmark walking the changelog backwards | ||
perfnodelookup | ||||
(no help text available) | ||||
|
r41610 | perfnodemap benchmark the time necessary to look up revision from a cold | ||
nodemap | ||||
r42183 | perfparents benchmark the time necessary to fetch one changeset's parents. | |||
|
r27101 | perfpathcopies | ||
|
r40770 | benchmark the copy tracing logic | ||
r32467 | perfphases benchmark phasesets computation | |||
|
r39180 | perfphasesremote | ||
benchmark time needed to analyse phases of the remote server | ||||
|
r40961 | perfprogress printing of progress bars | ||
|
r27101 | perfrawfiles (no help text available) | ||
|
r30451 | perfrevlogchunks | ||
Benchmark operations on revlog chunks. | ||||
|
r32532 | perfrevlogindex | ||
Benchmark operations against a revlog index. | ||||
|
r27470 | perfrevlogrevision | ||
Benchmark obtaining a revlog revision. | ||||
|
r32531 | perfrevlogrevisions | ||
Benchmark reading a series of revisions from a revlog. | ||||
|
r40583 | perfrevlogwrite | ||
Benchmark writing a series of revisions to a revlog. | ||||
|
r27101 | perfrevrange (no help text available) | ||
perfrevset benchmark the execution time of a revset | ||||
perfstartup (no help text available) | ||||
r43390 | perfstatus benchmark the performance of a single status call | |||
|
r27101 | perftags (no help text available) | ||
perftemplating | ||||
|
r38277 | test the rendering time of a given template | ||
|
r35879 | perfunidiff benchmark a unified diff between revisions | ||
|
r27101 | perfvolatilesets | ||
benchmark the computation of various volatile set | ||||
perfwalk (no help text available) | ||||
|
r30977 | perfwrite microbenchmark ui.write | ||
|
r27101 | |||
r42181 | (use 'hg help -v perf' to show built-in aliases and global options) | |||
|
r27315 | $ hg perfaddremove | ||
$ hg perfancestors | ||||
$ hg perfancestorset 2 | ||||
$ hg perfannotate a | ||||
|
r30307 | $ hg perfbdiff -c 1 | ||
|
r30426 | $ hg perfbdiff --alldata 1 | ||
|
r35879 | $ hg perfunidiff -c 1 | ||
$ hg perfunidiff --alldata 1 | ||||
r32733 | $ hg perfbookmarks | |||
|
r27315 | $ hg perfbranchmap | ||
|
r40756 | $ hg perfbranchmapload | ||
|
r40804 | $ hg perfbranchmapupdate --base "not tip" --target "tip" | ||
benchmark of branchmap with 3 revisions with 1 new ones | ||||
|
r27315 | $ hg perfcca | ||
|
r30018 | $ hg perfchangegroupchangelog | ||
|
r40749 | $ hg perfchangegroupchangelog --cgversion 01 | ||
|
r27315 | $ hg perfchangeset 2 | ||
$ hg perfctxfiles 2 | ||||
$ hg perfdiffwd | ||||
$ hg perfdirfoldmap | ||||
$ hg perfdirs | ||||
$ hg perfdirstate | ||||
r43466 | $ hg perfdirstate --iteration | |||
|
r27315 | $ hg perfdirstatedirs | ||
$ hg perfdirstatefoldmap | ||||
$ hg perfdirstatewrite | ||||
|
r37434 | #if repofncache | ||
|
r27315 | $ hg perffncacheencode | ||
$ hg perffncacheload | ||||
|
r38717 | $ hg debugrebuildfncache | ||
fncache already up to date | ||||
|
r27315 | $ hg perffncachewrite | ||
|
r38717 | $ hg debugrebuildfncache | ||
fncache already up to date | ||||
|
r37434 | #endif | ||
|
r27315 | $ hg perfheads | ||
|
r40781 | $ hg perfignore | ||
|
r27315 | $ hg perfindex | ||
|
r39005 | $ hg perflinelogedits -n 1 | ||
|
r27315 | $ hg perfloadmarkers | ||
$ hg perflog | ||||
$ hg perflookup 2 | ||||
$ hg perflrucache | ||||
$ hg perfmanifest 2 | ||||
|
r39354 | $ hg perfmanifest -m 44fe2c8352bb3a478ffd7d8350bbc721920134d1 | ||
$ hg perfmanifest -m 44fe2c8352bb | ||||
abort: manifest revision must be integer or full node | ||||
[255] | ||||
|
r27315 | $ hg perfmergecalculate -r 3 | ||
$ hg perfmoonwalk | ||||
$ hg perfnodelookup 2 | ||||
$ hg perfpathcopies 1 2 | ||||
|
r40961 | $ hg perfprogress --total 1000 | ||
|
r27315 | $ hg perfrawfiles 2 | ||
|
r32532 | $ hg perfrevlogindex -c | ||
|
r37356 | #if reporevlogstore | ||
|
r32531 | $ hg perfrevlogrevisions .hg/store/data/a.i | ||
|
r37356 | #endif | ||
|
r27470 | $ hg perfrevlogrevision -m 0 | ||
|
r30451 | $ hg perfrevlogchunks -c | ||
|
r27315 | $ hg perfrevrange | ||
$ hg perfrevset 'all()' | ||||
$ hg perfstartup | ||||
$ hg perfstatus | ||||
$ hg perftags | ||||
$ hg perftemplating | ||||
$ hg perfvolatilesets | ||||
$ hg perfwalk | ||||
$ hg perfparents | ||||
|
r40977 | $ hg perfdiscovery -q . | ||
|
r27101 | |||
r42186 | Test run control | |||
---------------- | ||||
Simple single entry | ||||
$ hg perfparents --config perf.stub=no --config perf.run-limits='0.000000001-15' | ||||
! wall * comb * user * sys * (best of 15) (glob) | ||||
Multiple entries | ||||
$ hg perfparents --config perf.stub=no --config perf.run-limits='500000-1, 0.000000001-5' | ||||
! wall * comb * user * sys * (best of 5) (glob) | ||||
error case are ignored | ||||
$ hg perfparents --config perf.stub=no --config perf.run-limits='500, 0.000000001-5' | ||||
malformatted run limit entry, missing "-": 500 | ||||
! wall * comb * user * sys * (best of 5) (glob) | ||||
$ hg perfparents --config perf.stub=no --config perf.run-limits='aaa-12, 0.000000001-5' | ||||
|
r42230 | malformatted run limit entry, could not convert string to float: aaa: aaa-12 (no-py3 !) | ||
malformatted run limit entry, could not convert string to float: 'aaa': aaa-12 (py3 !) | ||||
r42186 | ! wall * comb * user * sys * (best of 5) (glob) | |||
$ hg perfparents --config perf.stub=no --config perf.run-limits='12-aaaaaa, 0.000000001-5' | ||||
malformatted run limit entry, invalid literal for int() with base 10: 'aaaaaa': 12-aaaaaa | ||||
! wall * comb * user * sys * (best of 5) (glob) | ||||
|
r38716 | test actual output | ||
------------------ | ||||
normal output: | ||||
$ hg perfheads --config perf.stub=no | ||||
! wall * comb * user * sys * (best of *) (glob) | ||||
detailed output: | ||||
$ hg perfheads --config perf.all-timing=yes --config perf.stub=no | ||||
! wall * comb * user * sys * (best of *) (glob) | ||||
! wall * comb * user * sys * (max of *) (glob) | ||||
! wall * comb * user * sys * (avg of *) (glob) | ||||
! wall * comb * user * sys * (median of *) (glob) | ||||
|
r40176 | test json output | ||
---------------- | ||||
normal output: | ||||
$ hg perfheads --template json --config perf.stub=no | ||||
[ | ||||
{ | ||||
"comb": *, (glob) | ||||
"count": *, (glob) | ||||
"sys": *, (glob) | ||||
"user": *, (glob) | ||||
"wall": * (glob) | ||||
} | ||||
] | ||||
detailed output: | ||||
$ hg perfheads --template json --config perf.all-timing=yes --config perf.stub=no | ||||
[ | ||||
{ | ||||
"avg.comb": *, (glob) | ||||
"avg.count": *, (glob) | ||||
"avg.sys": *, (glob) | ||||
"avg.user": *, (glob) | ||||
"avg.wall": *, (glob) | ||||
"comb": *, (glob) | ||||
"count": *, (glob) | ||||
"max.comb": *, (glob) | ||||
"max.count": *, (glob) | ||||
"max.sys": *, (glob) | ||||
"max.user": *, (glob) | ||||
"max.wall": *, (glob) | ||||
"median.comb": *, (glob) | ||||
"median.count": *, (glob) | ||||
"median.sys": *, (glob) | ||||
"median.user": *, (glob) | ||||
"median.wall": *, (glob) | ||||
"sys": *, (glob) | ||||
"user": *, (glob) | ||||
"wall": * (glob) | ||||
} | ||||
] | ||||
r42551 | Test pre-run feature | |||
-------------------- | ||||
(perf discovery has some spurious output) | ||||
$ hg perfdiscovery . --config perf.stub=no --config perf.run-limits='0.000000001-1' --config perf.pre-run=0 | ||||
! wall * comb * user * sys * (best of 1) (glob) | ||||
searching for changes | ||||
$ hg perfdiscovery . --config perf.stub=no --config perf.run-limits='0.000000001-1' --config perf.pre-run=1 | ||||
! wall * comb * user * sys * (best of 1) (glob) | ||||
searching for changes | ||||
searching for changes | ||||
$ hg perfdiscovery . --config perf.stub=no --config perf.run-limits='0.000000001-1' --config perf.pre-run=3 | ||||
! wall * comb * user * sys * (best of 1) (glob) | ||||
searching for changes | ||||
searching for changes | ||||
searching for changes | ||||
searching for changes | ||||
r42552 | test profile-benchmark option | |||
------------------------------ | ||||
Function to check that statprof ran | ||||
$ statprofran () { | ||||
> egrep 'Sample count:|No samples recorded' > /dev/null | ||||
> } | ||||
$ hg perfdiscovery . --config perf.stub=no --config perf.run-limits='0.000000001-1' --config perf.profile-benchmark=yes 2>&1 | statprofran | ||||
|
r29570 | Check perf.py for historical portability | ||
|
r38716 | ---------------------------------------- | ||
|
r29570 | |||
$ cd "$TESTDIR/.." | ||||
|
r33199 | $ (testrepohg files -r 1.2 glob:mercurial/*.c glob:mercurial/*.py; | ||
> testrepohg files -r tip glob:mercurial/*.c glob:mercurial/*.py) | | ||||
|
r29571 | > "$TESTDIR"/check-perf-code.py contrib/perf.py | ||
|
r35617 | contrib/perf.py:\d+: (re) | ||
|
r35108 | > from mercurial import ( | ||
import newer module separately in try clause for early Mercurial | ||||
|
r39180 | contrib/perf.py:\d+: (re) | ||
> from mercurial import ( | ||||
import newer module separately in try clause for early Mercurial | ||||
|
r40583 | contrib/perf.py:\d+: (re) | ||
> origindexpath = orig.opener.join(orig.indexfile) | ||||
use getvfs()/getsvfs() for early Mercurial | ||||
contrib/perf.py:\d+: (re) | ||||
> origdatapath = orig.opener.join(orig.datafile) | ||||
use getvfs()/getsvfs() for early Mercurial | ||||
contrib/perf.py:\d+: (re) | ||||
> vfs = vfsmod.vfs(tmpdir) | ||||
use getvfs()/getsvfs() for early Mercurial | ||||
contrib/perf.py:\d+: (re) | ||||
> vfs.options = getattr(orig.opener, 'options', None) | ||||
use getvfs()/getsvfs() for early Mercurial | ||||
|
r35108 | [1] | ||