[darcs-users] On the darcs 1 traditional vs hashed issue

Duncan Coutts duncan.coutts at worc.ox.ac.uk
Fri Aug 28 16:08:25 UTC 2009


Hi darcs hackers,

I recently upgraded to darcs 2.3.0 but downgraded again to 2.2.1 because
all the repos I use regularly are traditional darcs 1 format and it
appeared to be much much slower on "whatsnew".

Having now done some timing experiments I see I may have been too hasty.

I used a big repo (ghc's testsuite) to accentuate the results. The repos
I use normally are rather smaller and rather faster, but it was still a
noticeable problem (which is why I originally downgraded again).

Since the testsuite is darcs1 format, my local options are darcs 1
traditional, or darcs 1 hashed format. So I'm comparing both. I'm
comparing darcs 1.0.9, 2.2.1 and 2.3.

All the timings below are for the second run, to allow stuff to be in
the OS caches.

whatsnew
--------

traditional, darcs 1.0.9:  0.25 seconds
traditional, darcs 2.2.1:  0.28 seconds
traditional, darcs 2.3.0: 25.35 seconds

hashed,      darcs 2.2.1:  6.74 seconds
hashed,      darcs 2.3.0:  0.07 seconds


get (local from traditional vs hashed)
-----------

traditional, darcs 1.0.9:   8.0 seconds
traditional, darcs 2.2.1:  18.2 seconds
traditional, darcs 2.3.0:  34.3 seconds

hashed,      darcs 2.2.1:   5.7 seconds
hashed,      darcs 2.3.0:   6.2 seconds


The solution seems to be to switch to darcs 1 hashed format locally. I
note that darcs-2.3 now defaults to the hashed format when getting a new
repo. However we get no advice about existing repos and get hit with up
to a 100x slowdown.

So, it would be nice if we got told that we should switch, and if there
were a more convenient way of doing it. By convenient I mean inplace
without affecting my working copy. I've got 100's of local darcs repos
and it'll be a pain to switch them all and preserve all the unrecorded
changes.

Duncan



More information about the darcs-users mailing list