view tests/test-debian-packages.t @ 35599:af25237be091

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.
author Boris Feld <boris.feld@octobus.net>
date Sun, 17 Dec 2017 04:31:27 +0100
parents 0133ca39c688
children 7574ccd87200
line wrap: on
line source

#require test-repo slow debhelper debdeps

  $ . "$TESTDIR/helpers-testrepo.sh"
  $ testrepohgenv

Ensure debuild doesn't run the testsuite, as that could get silly.
  $ DEB_BUILD_OPTIONS=nocheck
  $ export DEB_BUILD_OPTIONS
  $ OUTPUTDIR=`pwd`
  $ export OUTPUTDIR

  $ cd "$TESTDIR"/..
  $ make deb > $OUTPUTDIR/build.log 2>&1
  $ cd $OUTPUTDIR
  $ ls *.deb | grep -v 'dbg'
  mercurial-common_*.deb (glob)
  mercurial_*.deb (glob)
main deb should have .so but no .py
  $ dpkg --contents mercurial_*.deb | egrep '(localrepo|parsers)'
  * ./usr/lib/python2.7/dist-packages/mercurial/cext/parsers*.so (glob)
mercurial-common should have py but no .so or pyc
  $ dpkg --contents mercurial-common_*.deb | egrep '(localrepo|parsers.*so)'
  * ./usr/lib/python2.7/dist-packages/mercurial/localrepo.py (glob)
zsh completions should be in the common package
  $ dpkg --contents mercurial-common_*.deb | egrep 'zsh.*[^/]$'
  * ./usr/share/zsh/vendor-completions/_hg (glob)
chg should be installed alongside hg, in the 'mercurial' package
  $ dpkg --contents mercurial_*.deb | egrep 'chg$'
  * ./usr/bin/chg (glob)
chg should come with a man page
  $ dpkg --contents mercurial_*.deb | egrep 'man.*chg'
  * ./usr/share/man/man1/chg.1.gz (glob)