[Haskell-cafe] Re: announcing darcs 2.0.0pre2

Simon Marlow simonmarhaskell at gmail.com
Thu Jan 17 05:01:27 EST 2008

David Roundy wrote:
> On Thu, Jan 03, 2008 at 11:11:40AM +0000, Simon Marlow wrote:
>>> Anyhow, could you retry this test with the above change in methodology,
>>> and let me know if (a) the pull is still slow the first time and (b) if
>>> it's much faster the second time (after the reverse unpull/pull)?
>> I think I've done it in both directions now, and it got faster, but still 
>> much slower than darcs1:
>> $ time darcs2 unpull --from-tag 2007-09-25 -a
>> Finished unpulling.
>> 58.68s real   50.64s user   6.36s system   97% darcs2 unpull --from-tag 
>> 2007-09-25 -a
>> $ time darcs2 pull -a ../ghc-darcs2
>> Pulling from "../ghc-darcs2"...
>> Finished pulling and applying.
>> 53.28s real   44.62s user   7.10s system   97% darcs2 pull -a ../ghc-darcs2
>> This is still an order of magnitude slower than darcs1 for the same 
>> operation.  (these times are now on the local filesystem, BTW)
> I've recently found the problem leading to this slowdown (I believe) and
> get about an order-of-magnitude improvement in the speed of a pull of 400
> patches in the ghc repository.  It turned out to be an issue that scaled
> with the size (width) of the repository, not with the number of patches
> (which had been the obvious suspect), which was causing trouble when
> applying to the pristine cache.
> At this point, darcs-2 outperforms darcs-1 on most tests that I've tried,
> so it'd be a good time to find some more performance problems, if you
> can... and I don't doubt that there are more out there.

Certainly a lot faster, nice work!  Though it's still not as fast as 
darcs-1 here.  New figures:

$ time darcs2 unpull --from-tag 2007-09-25 -a
Finished unpulling.
18.83s real   15.27s user   1.53s system   89% darcs2 unpull --from-tag 
2007-09-25 -a
$ time darcs2 pull ../ghc-darcs2-other -a
Finished pulling and applying.
10.38s real   7.69s user   1.50s system   88% darcs2 pull ../ghc-darcs2-other -

I repeated the darcs-1 timings for comparison:

$ time darcs unpull --from-tag 2007-09-25 -a
Finished unpulling.
8.04s real   7.14s user   0.90s system   99% darcs unpull --from-tag 
2007-09-25 -a
$ time darcs pull ~/ghc-HEAD -a
Finished pulling and applying.
7.90s real   4.90s user   0.98s system   74% darcs pull ~/ghc-HEAD -a

In this case darcs-1 is pulling more patches (530 vs. 400), because I'm 
using the latest GHC HEAD repo.  Also the darcs-1 repository being pulled 
from is on a different, NFS mounted, filesystem, whereas the darcs-2 
timings were made using repos on the same local filesystem.  In all cases I 
tried things a few times to let caches etc. fill up.

Can you repeat these?


More information about the Haskell-Cafe mailing list