
Hi,
Ben Franksen
This rc release is still notably slower on some operations than older releases. My test case is a large project named RTEMS (a real-time OS), that we wish to import into darcs (at work) to better track our own additions and modifications.
To repeat, download two adjacent releases, e.g.
wget http://www.rtems.org/ftp/pub/rtems/4.9.0/rtems-4.8.1.tar.bz2 wget http://www.rtems.org/ftp/pub/rtems/4.9.0/rtems-4.9.0.tar.bz2
unpack, initialize darcs and record in the 4.8.1 tree, then copy _darcs to the 4.9.0 version and try to record -l or whatsnew -l. [snip]
I am not sure about 2.4, but if this is an important usecase for you, I might have some good news. I have cobbled together a simple replacement for the current "summary" code in darcs whatsnew (right now it does not handle moves, but that should be relatively easy to add that without much performance impact). The code in this form never looks *into* files, it just looks at their hashes (which are cached in the index), and for the look-for-adds case, for their presence in the "unrecorded" state (i.e. if they'd be there without look-for-adds). In your rtems example, I get following: with totally cold cache and no index (rm -f _darcs/index ; echo 3 > /proc/sys/vm/drop_caches) about 12 seconds, hot cache & up-to-date index, less than one second. The reported list looks vaguely correct. Unfortunately, this is not going to help you for record -lam "new release" -- which will still need to construct the whole huge patch in memory (and fail). I will eventually look into that problem as well, but this is likely going to be much harder.
I think this regression should be fixed before 2.4 is released.
Either way, I am not sure how serious this is wrt 2.4. I guess we could manage a rewrite of the summary code, but that would probably require another full beta cycle. I would be willing to list this under known issues, advising people that really need this to stick with 2.3.1 for now and upgrade to 2.5 which will hopefully improve matters in this respect (also for rec -lam). Yours, Petr.