[darcs-devel] Why is darcs get so slow?

Anthony Towns aj at azure.humbug.org.au
Wed Dec 29 22:58:49 PST 2004


Hi,

How come "darcs get --partial linux" is so slow? AFAICS, there aren't 
even any mergers involved, which is the usual scapegoat? And it's not 
/that/ big -- the checkpoint is 200MB uncompressed, and the patches 
after that are only another 8MB. Yet darcs seems to chew up well over a 
gig of RAM trying to process it, and seems to just sit and spin for ages 
after getting the patches and before actually creating the working 
directory or current/ (at which point I wander off, come back, decide 
I'm bored and hit Ctrl-C).

Trying the profiler, I get:

COST CENTRE                    MODULE               %time %alloc
hPutPS                         FastPackedString      39.7   36.8

taking up most of the time, invoked from write_checkpoint_patch in 
get_cmd. But I'm not sure if that's accurate, or a profiling sampling 
error - since the profiler seems to only notice about 7 minutes out of 
20 minutes runtime.

And this is just a simple get -- it's just applying patches, no 
commutation and evidently no mergers, so there's no real reason for it 
to be much slower than just using tar/patch would be. Yet it is.

I don't get what's going on. Anyone know?

Is darcs trying to create current/ in RAM, and wasting lots of time 
converting between string representations for no particular reason? Is 
there some other time sink somewhere?

Cheers,
aj




More information about the darcs-devel mailing list