[Haskell-cafe] Re: darcs 2.4 release candidate 2
me at mornfall.net
Sat Feb 20 09:01:09 EST 2010
Ben Franksen <benjamin.franksen at bessy.de> writes:
> 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.
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).
More information about the Haskell-Cafe