##// END OF EJS Templates
perf: add threading capability to perfbdiff...
perf: add threading capability to perfbdiff Since we are releasing the GIL during diffing, it is interesting to see how a thread pool would perform on diffing. We add a new `--threads` argument to commands. Synchronizing the thread pool is a bit complex because we want to be able to reuse it from one run to another. On my computer (i7 with 4 cores + hyperthreading), I get the following data for about 12000 revisions: threads wall comb wall gain comb overhead none 31.596715 31.59 0.00% 0.00% 1 31.621228 31.62 -0.08% 0.09% 2 16.406202 32.8 48.08% 3.83% 3 11.598334 34.76 63.29% 10.03% 4 9.205421 36.77 70.87% 16.40% 5 8.517604 42.51 73.04% 34.57% 6 7.94645 47.58 74.85% 50.62% 7 7.434972 51.92 76.47% 64.36% 8 7.070638 55.34 77.62% 75.18% Compared to the feature disabled (threads=0), the overhead is negligible with the threading code (threads=1), and the gain is already 48% with two threads.

File last commit:

r35617:af25237b default
r35617:af25237b default
Show More
test-contrib-perf.t
181 lines | 5.1 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]
> perfstatusext=$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
$ hg help perfstatusext
perfstatusext extension - helper extension to measure performance
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
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
(no help text available)
perfdirs (no help text available)
perfdirstate (no help text available)
perfdirstatedirs
(no help text available)
perfdirstatefoldmap
(no help text available)
perfdirstatewrite
(no help text available)
perffncacheencode
(no help text available)
perffncacheload
(no help text available)
perffncachewrite
(no help text available)
perfheads (no help text available)
perfindex (no help text available)
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)
timeless
test-contrib-perf: add smoke tests for perf.py
r27101 perfmanifest (no help text available)
perfmergecalculate
(no help text available)
perfmoonwalk benchmark walking the changelog backwards
perfnodelookup
(no help text available)
perfparents (no help text available)
perfpathcopies
(no help text available)
perfphases: add 'perfphases' command...
r32467 perfphases benchmark phasesets computation
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.
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)
perfstatus (no help text available)
perftags (no help text available)
perftemplating
(no help text available)
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
timeless
help: use single quotes in use warning
r29974 (use 'hg help -v perfstatusext' 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
perf: add a perfbookmarks command...
r32733 $ hg perfbookmarks
timeless
tests: drop require slow in test-contrib-perf...
r27315 $ hg perfbranchmap
$ hg perfcca
Gregory Szorc
perf: add perfchangegroupchangelog command...
r30018 $ hg perfchangegroupchangelog
timeless
tests: drop require slow in test-contrib-perf...
r27315 $ hg perfchangeset 2
$ hg perfctxfiles 2
$ hg perfdiffwd
$ hg perfdirfoldmap
$ hg perfdirs
$ hg perfdirstate
$ hg perfdirstatedirs
$ hg perfdirstatefoldmap
$ hg perfdirstatewrite
$ hg perffncacheencode
$ hg perffncacheload
$ hg perffncachewrite
$ hg perfheads
$ hg perfindex
$ hg perfloadmarkers
$ hg perflog
$ hg perflookup 2
$ hg perflrucache
$ hg perfmanifest 2
$ hg perfmergecalculate -r 3
$ hg perfmoonwalk
$ hg perfnodelookup 2
$ hg perfpathcopies 1 2
$ hg perfrawfiles 2
Gregory Szorc
perf: benchmark command for revlog indexes...
r32532 $ hg perfrevlogindex -c
Gregory Szorc
perf: rename perfrevlog to perfrevlogrevisions...
r32531 $ hg perfrevlogrevisions .hg/store/data/a.i
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
$ hg perftags
$ hg perftemplating
$ hg perfvolatilesets
$ hg perfwalk
$ hg perfparents
timeless
test-contrib-perf: add smoke tests for perf.py
r27101
FUJIWARA Katsunori
tests: introduce check-perf-code.py to add extra checks on perf.py...
r29570 Check perf.py for historical portability
$ 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
[1]