[darcs-users] Re: Darcs-server : slow

David Roundy droundy at abridgegame.org
Wed Jan 26 13:18:48 UTC 2005


On Wed, Jan 26, 2005 at 12:54:22PM +0100, tnorth at bluewin.ch wrote:
> More precisions about what's slow :
> 
>  darcs annotate --match hash 20050125204515-15220-1791c9b157f8fdd5110457560b236c7dec8e8450.gz
> 
> This takes 3 minutes (or more, depending of hashes)
> 
> 
> The project is 161148ko, 161Mb. This includes : mysql bases (binary files),
> php pages, jpg, png and gif pictures.
> 
> The only thing I want to know now is : is it normal ? If so, would I have
> better results without compression ?

Yeah, it's probably around what one would expect.  Darcs isn't optimized
for finding out information about a given patch.  Depending on your disk
speed vs processor speed, I imagine it could be either faster or slower if
you turned off compression.  It's worth experimenting.

Binary files are particularly painful, since darcs is pretty slow at
parsing them, which may be part of why your repository is slow.  This is an
area where I think darcs could be sped up, but few enough people keep
binaries under darcs that it's probably not the most important performance
area to work on.

> Darcs' darcs repository seems to work perfectly and quick, which
> difference?  I am running a PIII 866Mhz 256Mb ...

That would be another difference.  The darcs repository is run on a machine
with four 2.4GHz xeons--of course, this is a virtual machine, but it's
still pretty darn fast.  And there's still a noticeable delay when you run
an annotate, and I can see (on top) the darcs processes when people do run
annotate.

Darcs just isn't optimized for file-specific access.  We could add a cache
of just the portions of patches corresponding to specific files, but that
would again be a lot of work to solve a problem that only affects the
largest repositories.  And it wouldn't help with any of the "non-query"
commands, pull, get, etc.  So for the moment, I'd say simply speeding up
patch parsing would be more worthwhile, as that would benefit more darcs
commands.  For example, it would be nice if the lazy parser were able to
skim quickly over the contents of patches to files, so they needn't be
parsed unless we actually want to examine that file.  But so far the lazy
parser isn't even ever used (because I haven't had the time/interest to
benchmark and make sure it improved things--that is memory or time
behavior).
-- 
David Roundy
http://www.darcs.net




More information about the darcs-users mailing list