##// END OF EJS Templates
perf: add a way to benchmark `dirstate.status`...
perf: add a way to benchmark `dirstate.status` Getting more details about time spend in this specific internal bit is meaningful.

File last commit:

r43702:eabc5eec default
r43702:eabc5eec default
Show More
test-contrib-perf.t
399 lines | 12.4 KiB | text/troff | Tads3Lexer
/ tests / test-contrib-perf.t
timeless
tests: drop require slow in test-contrib-perf...
r27315 #require test-repo
timeless
test-contrib-perf: add smoke tests for perf.py
r27101
Set vars:
timeless
tests: silence test-repo obsolete warning...
r29219 $ . "$TESTDIR/helpers-testrepo.sh"
timeless
test-contrib-perf: add smoke tests for perf.py
r27101 $ CONTRIBDIR="$TESTDIR/../contrib"
timeless
tests: use a single repo for test-contrib-perf
r27309 Prepare repo:
timeless
test-contrib-perf: add smoke tests for perf.py
r27101
timeless
tests: use a single repo for test-contrib-perf
r27309 $ hg init
timeless
test-contrib-perf: add smoke tests for perf.py
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
timeless
tests: use a single repo for test-contrib-perf
r27309 $ cat >> $HGRCPATH << EOF
timeless
test-contrib-perf: add smoke tests for perf.py
r27101 > [extensions]
tests: use "perf" as a the extension name in test-contrib-perf.t...
r42181 > perf=$CONTRIBDIR/perf.py
timeless
tests: drop require slow in test-contrib-perf...
r27315 > [perf]
> presleep=0
> stub=on
> parentscount=1
timeless
test-contrib-perf: add smoke tests for perf.py
r27101 > EOF
tests: use "perf" as a the extension name in test-contrib-perf.t...
r42181 $ hg help -e perf
perf extension - helper extension to measure performance
timeless
test-contrib-perf: add smoke tests for perf.py
r27101
perf: document config options...
r42182 Configurations
==============
"perf"
------
"all-timing"
Augie Fackler
perf: copyedit a few documentation strings...
r42188 When set, additional statistics will be reported for each benchmark: best,
perf: document config options...
r42182 worst, median average. If not set only the best timing is reported
(default: off).
"presleep"
Augie Fackler
perf: copyedit a few documentation strings...
r42188 number of second to wait before any group of runs (default: 1)
perf: document config options...
r42182
perf: add a `pre-run` option...
r42551 "pre-run"
number of run to perform before starting measurement.
perf: add an option to profile the benchmark section...
r42552 "profile-benchmark"
Enable profiling for the benchmarked section. (The first iteration is
benchmarked)
perf: introduce a `perf.run-limits` options...
r42186 "run-limits"
Augie Fackler
perf: copyedit a few documentation strings...
r42188 Control the number of runs each benchmark will perform. The option value
perf: introduce a `perf.run-limits` options...
r42186 should be a list of '<time>-<numberofrun>' pairs. After each run the
Augie Fackler
perf: copyedit a few documentation strings...
r42188 conditions are considered in order with the following logic:
perf: introduce a `perf.run-limits` options...
r42186
Augie Fackler
perf: copyedit a few documentation strings...
r42188 If benchmark has been running for <time> seconds, and we have performed
perf: introduce a `perf.run-limits` options...
r42186 <numberofrun> iterations, stop the benchmark,
The default value is: '3.0-100, 10.0-3'
perf: document config options...
r42182 "stub"
Augie Fackler
perf: copyedit a few documentation strings...
r42188 When set, benchmarks will only be run once, useful for testing (default:
perf: document config options...
r42182 off)
timeless
test-contrib-perf: add smoke tests for perf.py
r27101 list of commands:
perfaddremove
(no help text available)
perfancestors
(no help text available)
perfancestorset
(no help text available)
perfannotate (no help text available)
Gregory Szorc
perf: support bdiffing multiple revisions in a single revlog...
r30336 perfbdiff benchmark a bdiff between revisions
perf: add a perfbookmarks command...
r32733 perfbookmarks
benchmark parsing bookmarks from disk to memory
timeless
test-contrib-perf: add smoke tests for perf.py
r27101 perfbranchmap
benchmark the update of a branchmap
Martijn Pieters
perf: time loading branchmap caches...
r39150 perfbranchmapload
benchmark reading the branchmap
Boris Feld
perf: add a `perfbranchmapupdate` command...
r40804 perfbranchmapupdate
benchmark branchmap update from for <base> revs to <target>
revs
Gregory Szorc
perf: add command to benchmark bundle reading...
r35108 perfbundleread
Benchmark reading of bundle files.
timeless
test-contrib-perf: add smoke tests for perf.py
r27101 perfcca (no help text available)
Gregory Szorc
perf: add perfchangegroupchangelog command...
r30018 perfchangegroupchangelog
Benchmark producing a changelog group for a changegroup.
timeless
test-contrib-perf: add smoke tests for perf.py
r27101 perfchangeset
(no help text available)
perfctxfiles (no help text available)
perfdiffwd Profile diff of working directory changes
perfdirfoldmap
perf: document `perfdirfoldmap`
r43397 benchmap a 'dirstate._map.dirfoldmap.get()' request
timeless
test-contrib-perf: add smoke tests for perf.py
r27101 perfdirs (no help text available)
perf: introduce a `--iteration` to `perfdirstate`...
r43466 perfdirstate benchmap the time of various distate operations
timeless
test-contrib-perf: add smoke tests for perf.py
r27101 perfdirstatedirs
perf: document `perfdirstatedirs`
r43393 benchmap a 'dirstate.hasdir' call from an empty 'dirs' cache
timeless
test-contrib-perf: add smoke tests for perf.py
r27101 perfdirstatefoldmap
perf: document `perfdirstatefoldmap`
r43395 benchmap a 'dirstate._map.filefoldmap.get()' request
timeless
test-contrib-perf: add smoke tests for perf.py
r27101 perfdirstatewrite
perf: document `perfdirstatewrite`
r43399 benchmap the time it take to write a dirstate on disk
Georges Racinet
perfdiscovery: benching findcommonheads()...
r40977 perfdiscovery
benchmark discovery between local repo and the peer at given
path
timeless
test-contrib-perf: add smoke tests for perf.py
r27101 perffncacheencode
(no help text available)
perffncacheload
(no help text available)
perffncachewrite
(no help text available)
Boris Feld
perf: document perfheads
r41479 perfheads benchmark the computation of a changelog heads
perf: add a `perfhelper-mergecopies` command...
r42577 perfhelper-mergecopies
find statistics about potential parameters for
'perfmergecopies'
Boris Feld
perf: rename `perfhelper-tracecopies` to `perfhelper-pathcopies`...
r40771 perfhelper-pathcopies
Boris Feld
perf: add a new `perfhelper-tracecopies` command...
r40727 find statistic about potential parameters for the
'perftracecopies'
Boris Feld
perf: add a perfignore command...
r40781 perfignore benchmark operation related to computing ignore
Boris Feld
perf: add some documentation to perfindex...
r41482 perfindex benchmark index creation time followed by a lookup
Jun Wu
perf: add a command to benchmark linelog edits...
r39005 perflinelogedits
(no help text available)
timeless
test-contrib-perf: add smoke tests for perf.py
r27101 perfloadmarkers
benchmark the time to parse the on-disk markers for a repo
perflog (no help text available)
perflookup (no help text available)
Gregory Szorc
perf: add perflrucachedict command...
r27286 perflrucachedict
(no help text available)
Boris Feld
perf: document the perfmanifest command
r38715 perfmanifest benchmark the time to read a manifest from disk and return a
usable
timeless
test-contrib-perf: add smoke tests for perf.py
r27101 perfmergecalculate
(no help text available)
perf: add a new `perfmergecopies` command...
r42576 perfmergecopies
measure runtime of 'copies.mergecopies'
timeless
test-contrib-perf: add smoke tests for perf.py
r27101 perfmoonwalk benchmark walking the changelog backwards
perfnodelookup
(no help text available)
Boris Feld
perf: add a perfnodemap command...
r41610 perfnodemap benchmark the time necessary to look up revision from a cold
nodemap
perf: document perfparents
r42183 perfparents benchmark the time necessary to fetch one changeset's parents.
timeless
test-contrib-perf: add smoke tests for perf.py
r27101 perfpathcopies
Boris Feld
perf: add a docstring to `perfpathcopies`...
r40770 benchmark the copy tracing logic
perfphases: add 'perfphases' command...
r32467 perfphases benchmark phasesets computation
Boris Feld
perf: add a perfphasesremote command...
r39180 perfphasesremote
benchmark time needed to analyse phases of the remote server
Gregory Szorc
perf: add perfprogress command...
r40961 perfprogress printing of progress bars
timeless
test-contrib-perf: add smoke tests for perf.py
r27101 perfrawfiles (no help text available)
Gregory Szorc
perf: add command for measuring revlog chunk operations...
r30451 perfrevlogchunks
Benchmark operations on revlog chunks.
Gregory Szorc
perf: benchmark command for revlog indexes...
r32532 perfrevlogindex
Benchmark operations against a revlog index.
Gregory Szorc
perf: add perfrevlogrevision...
r27470 perfrevlogrevision
Benchmark obtaining a revlog revision.
Gregory Szorc
perf: rename perfrevlog to perfrevlogrevisions...
r32531 perfrevlogrevisions
Benchmark reading a series of revisions from a revlog.
Boris Feld
perf: introduce a perfrevlogwrite command...
r40583 perfrevlogwrite
Benchmark writing a series of revisions to a revlog.
timeless
test-contrib-perf: add smoke tests for perf.py
r27101 perfrevrange (no help text available)
perfrevset benchmark the execution time of a revset
perfstartup (no help text available)
perf: document `perfstatus`
r43390 perfstatus benchmark the performance of a single status call
timeless
test-contrib-perf: add smoke tests for perf.py
r27101 perftags (no help text available)
perftemplating
Boris Feld
perftemplating: allow to specify the template to test...
r38277 test the rendering time of a given template
Augie Fackler
perf: add a perfunidiff command for benchmarking unified diff speed...
r35879 perfunidiff benchmark a unified diff between revisions
timeless
test-contrib-perf: add smoke tests for perf.py
r27101 perfvolatilesets
benchmark the computation of various volatile set
perfwalk (no help text available)
Simon Farnsworth
contrib: add a write microbenchmark to perf.py...
r30977 perfwrite microbenchmark ui.write
timeless
test-contrib-perf: add smoke tests for perf.py
r27101
tests: use "perf" as a the extension name in test-contrib-perf.t...
r42181 (use 'hg help -v perf' to show built-in aliases and global options)
timeless
tests: drop require slow in test-contrib-perf...
r27315 $ hg perfaddremove
$ hg perfancestors
$ hg perfancestorset 2
$ hg perfannotate a
Gregory Szorc
perf: add perfbdiff...
r30307 $ hg perfbdiff -c 1
Gregory Szorc
perf: unbust perfbdiff --alldata...
r30426 $ hg perfbdiff --alldata 1
Augie Fackler
perf: add a perfunidiff command for benchmarking unified diff speed...
r35879 $ hg perfunidiff -c 1
$ hg perfunidiff --alldata 1
perf: add a perfbookmarks command...
r32733 $ hg perfbookmarks
timeless
tests: drop require slow in test-contrib-perf...
r27315 $ hg perfbranchmap
Boris Feld
perf: fallback to subset if ondisk cache is missing in perfbranchmapload...
r40756 $ hg perfbranchmapload
Boris Feld
perf: add a `perfbranchmapupdate` command...
r40804 $ hg perfbranchmapupdate --base "not tip" --target "tip"
benchmark of branchmap with 3 revisions with 1 new ones
timeless
tests: drop require slow in test-contrib-perf...
r27315 $ hg perfcca
Gregory Szorc
perf: add perfchangegroupchangelog command...
r30018 $ hg perfchangegroupchangelog
Pulkit Goyal
perf: rename version flag of perfchangegroupchangelog to cgversion...
r40749 $ hg perfchangegroupchangelog --cgversion 01
timeless
tests: drop require slow in test-contrib-perf...
r27315 $ hg perfchangeset 2
$ hg perfctxfiles 2
$ hg perfdiffwd
$ hg perfdirfoldmap
$ hg perfdirs
$ hg perfdirstate
perf: introduce a `--contains` flag to the `perfdirstate` command...
r43468 $ hg perfdirstate --contains
perf: introduce a `--iteration` to `perfdirstate`...
r43466 $ hg perfdirstate --iteration
timeless
tests: drop require slow in test-contrib-perf...
r27315 $ hg perfdirstatedirs
$ hg perfdirstatefoldmap
$ hg perfdirstatewrite
Gregory Szorc
tests: conditionalize tests for various repo features...
r37434 #if repofncache
timeless
tests: drop require slow in test-contrib-perf...
r27315 $ hg perffncacheencode
$ hg perffncacheload
Boris Feld
perffncachewrite: load fncache after lock is acquired...
r38717 $ hg debugrebuildfncache
fncache already up to date
timeless
tests: drop require slow in test-contrib-perf...
r27315 $ hg perffncachewrite
Boris Feld
perffncachewrite: load fncache after lock is acquired...
r38717 $ hg debugrebuildfncache
fncache already up to date
Gregory Szorc
tests: conditionalize tests for various repo features...
r37434 #endif
timeless
tests: drop require slow in test-contrib-perf...
r27315 $ hg perfheads
Boris Feld
perf: add a perfignore command...
r40781 $ hg perfignore
timeless
tests: drop require slow in test-contrib-perf...
r27315 $ hg perfindex
Jun Wu
perf: add a command to benchmark linelog edits...
r39005 $ hg perflinelogedits -n 1
timeless
tests: drop require slow in test-contrib-perf...
r27315 $ hg perfloadmarkers
$ hg perflog
$ hg perflookup 2
$ hg perflrucache
$ hg perfmanifest 2
Gregory Szorc
perf: use storage API for resolving manifest node...
r39354 $ hg perfmanifest -m 44fe2c8352bb3a478ffd7d8350bbc721920134d1
$ hg perfmanifest -m 44fe2c8352bb
abort: manifest revision must be integer or full node
[255]
timeless
tests: drop require slow in test-contrib-perf...
r27315 $ hg perfmergecalculate -r 3
$ hg perfmoonwalk
$ hg perfnodelookup 2
$ hg perfpathcopies 1 2
Gregory Szorc
perf: add perfprogress command...
r40961 $ hg perfprogress --total 1000
timeless
tests: drop require slow in test-contrib-perf...
r27315 $ hg perfrawfiles 2
Gregory Szorc
perf: benchmark command for revlog indexes...
r32532 $ hg perfrevlogindex -c
Gregory Szorc
tests: conditionalize tests based on presence of revlogs for files...
r37356 #if reporevlogstore
Gregory Szorc
perf: rename perfrevlog to perfrevlogrevisions...
r32531 $ hg perfrevlogrevisions .hg/store/data/a.i
Gregory Szorc
tests: conditionalize tests based on presence of revlogs for files...
r37356 #endif
Gregory Szorc
perf: add perfrevlogrevision...
r27470 $ hg perfrevlogrevision -m 0
Gregory Szorc
perf: add command for measuring revlog chunk operations...
r30451 $ hg perfrevlogchunks -c
timeless
tests: drop require slow in test-contrib-perf...
r27315 $ hg perfrevrange
$ hg perfrevset 'all()'
$ hg perfstartup
$ hg perfstatus
perf: add a way to benchmark `dirstate.status`...
r43702 $ hg perfstatus --dirstate
timeless
tests: drop require slow in test-contrib-perf...
r27315 $ hg perftags
$ hg perftemplating
$ hg perfvolatilesets
$ hg perfwalk
$ hg perfparents
Georges Racinet
perfdiscovery: benching findcommonheads()...
r40977 $ hg perfdiscovery -q .
timeless
test-contrib-perf: add smoke tests for perf.py
r27101
perf: introduce a `perf.run-limits` options...
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'
Gregory Szorc
perf: make perf.run-limits code work with Python 3...
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 !)
perf: introduce a `perf.run-limits` options...
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)
Boris Feld
perf: add a 'perf.all-timing' option to display more than best time...
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)
Boris Feld
perf: fix -T json...
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)
}
]
perf: add a `pre-run` option...
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
perf: add an option to profile the benchmark section...
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
FUJIWARA Katsunori
tests: introduce check-perf-code.py to add extra checks on perf.py...
r29570 Check perf.py for historical portability
Boris Feld
perf: add a 'perf.all-timing' option to display more than best time...
r38716 ----------------------------------------
FUJIWARA Katsunori
tests: introduce check-perf-code.py to add extra checks on perf.py...
r29570
$ cd "$TESTDIR/.."
Yuya Nishihara
tests: alias syshg and syshgenv so they can be switched conditionally
r33199 $ (testrepohg files -r 1.2 glob:mercurial/*.c glob:mercurial/*.py;
> testrepohg files -r tip glob:mercurial/*.c glob:mercurial/*.py) |
FUJIWARA Katsunori
tests: check importing modules in perf.py for historical portability...
r29571 > "$TESTDIR"/check-perf-code.py contrib/perf.py
Boris Feld
perf: add threading capability to perfbdiff...
r35617 contrib/perf.py:\d+: (re)
Gregory Szorc
perf: add command to benchmark bundle reading...
r35108 > from mercurial import (
import newer module separately in try clause for early Mercurial
Boris Feld
perf: add a perfphasesremote command...
r39180 contrib/perf.py:\d+: (re)
> from mercurial import (
import newer module separately in try clause for early Mercurial
Boris Feld
perf: introduce a perfrevlogwrite command...
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
Gregory Szorc
perf: add command to benchmark bundle reading...
r35108 [1]