- Benchmarks repositories TODO:
- small pack without new patches
- small pack with a few new patches
- small pack with many new patches
- big pack without new patches
- big pack with a few new patches
- big pack with many new patches Then compare times of
get --no-packs --lazy,
get --packs --lazy,
get --no-packs --complete,
get --packs --complete.
- Xmonad: ~ 1200 patches
- DDC: ~ 4500 patches
- Agda: ~ 4600 patches
- Darcs: ~ 11000 patches
- Nikki and the robots: ~ 2000 patches
- : ~ 7500 patches
To reduce number of files needed to transfer over network, the
optimize --http command packs a repository into two tarballs,
patches.tar.gz, with the following content:
meta-filelist-* files contain directory listings for hashed.pristine and inventories dirs, in reverse order wrt tarball itself. While getting, files from this listings are downloaded using cache in parallel with tarball.
meta-* files in general contain additional files and information that could extend the tarballs functionality in some way. They are expected to have a small size, so that negative effect on performance would be minimal.
- Download and unpack basic.tar.gz. Result: lazy repository from time when
optimize --httphas been done.
- Pull from parent repository. Result: lazy repository from current time.
- Download and unpack patches.tar.gz. Result: full repository.
optimize --http improve the user experience?
- Jérémie’s repo (~900 patches): from 10s (
get --no-packs) to 1s (
darcs optimize --httptakes 14s to run. _darcs goes from 54 MBytes to 64 MBytes (indeed _darcs/packs/ is 11 MBytes) Complete get: from 37 to 2 minutes, lazy get from 27 seconds to 7 seconds.
screened + 12 patches:
. packs no-packs lazy 30s 1m30 full 2m30s 31m