
On Mon, 2008-08-11 at 14:29 +0200, Thomas Schilling wrote:
On 11 Aug 2008, at 13:00, Duncan Coutts wrote:
It's not clear to me that we've really bothered to find out. The last evaluation in relation to ghc that I'm aware of was prior to the 2.0 release. My impression is that we've all complained about the darcs v1 problems (justly) but spent the most effort investigating things other than darcs v2 which would be the easiest to upgrade to and not have the problems of using two different systems for ghc vs other libs.
I converted the ghc repo to darcs2 (locally):
Getting file local history:
* darcs changes --last 20 compiler/main/HscTypes.lhs
very quick but prints only two patches
* darcs changes compiler/hsSyn/HsTypes.lhs
1m22s (16s for the second time)
Interesting that you get so much variance between runs. I get 32s user time first time and 30s the second. In this test darcs 2 is faster that darcs 1 on v1 format repos and darcs 2 is faster on v2 format repos than on v1 format, though only by a few seconds. At a guess, the issue here is that darcs is not indexing those changes per-file, which is why --last 20 doesn't give the last 20 for that file and why asking for all changes takes so long. Perhaps if it did cache this info per-file it'd help with annotate too.
Git <1s
* darcs get ghc2 ghc-test (creating a *local* branch)
real 13m25.365s user 0m14.677s sys 0m29.541s
(at least it seems it actually worked, though)
That's an order of magnitude different to what I see: $ time darcs2 get ghc2 ghc-test Copying patches, to get lazy repository hit ctrl-C... Finished getting. real 0m21.428s user 0m11.221s sys 0m1.380s Note that this is much faster in the darcs v2 format than darcs 2 using the darcs v1 format: $ time darcs2 get ghc ghc-test1 Finished getting. real 1m51.959s user 1m15.449s sys 0m11.877s However darcs v1 is faster still: $ time darcs1 get ghc ghc-test1_ Copying patch 19084 of 19084... done. Finished getting. real 0m8.851s user 0m3.668s sys 0m0.708s It doesn't seem to spend any time applying the patches, unlike what darcs 2 is doing for v1 or v2 formats. Though in any case, one doesn't need to darcs get locally since one can use cp -a right?
git clone ghc g2 (the slow method of creating a local branch)
real 0m6.742s user 0m0.335s sys 0m0.652s
* I haven't tested a remote pull yet. At 80 Kb/s, it should take about 15min to clone via Git (70 MB). A test of darcs would be interesting.
We'll be testing this for the code.h.o conversion. We'll keep you posted. Duncan