Re: [Haskell-cafe] Re: announcing darcs 2.0.0pre2

2007-12-21 Thread David Roundy
On Mon, Dec 17, 2007 at 12:29:20PM +, Simon Marlow wrote:
 David Roundy wrote:
 I am pleased to announce the availability of the second prerelease of darcs
 two, darcs 2.0.0pre2.
 
 Thanks!
 
 Continuing my performance tests, I tried unpulling and re-pulling a bunch 
 of patches in a GHC tree.  I'm unpulling about 400 patches using 
 --from-tag, and then pulling them again from a local repo.  Summary: darcs2 
 is about 10x slower than darcs1 on unpull, and on pull it is 100x slower in 
 user time but only 20x slower in elapsed time.

I'm not seeing this behavior right now, but am unsure whether it's because
of something in my testing, or if I've improved something.  I definitely
fixed a problem in the no-patches-to-pull case, where we were unnecessarily
reading the entire repository because of inadequate laziness.

Another possibility is that the problem is one that shows up because of the
way the repositories were generated.  Incidentally, I *think* that with the
latest convert, optimize should be a noop, and if it's not, I'd be
interested to hear (but haven't gotten around to testing...).  I suspect
that if you perform the same sequence in the reverse direction (unpull and
repull, but running the commands in the other repository), then you'll see
much better performance.  My suspicion is that the trouble is that optimize
only optimizes for changes since the last tag, so by unpulling this many
patches you're going back into unoptimized territory.  I'm toying with
making optimize do a deep optimize, but then it'll always be O(N^2),
which is a little scary.  On the other hand, since we now auto-optimize,
making the real thing more expensive shouldn't hurt as much (since it'll
not be needed very often).

Anyhow, could you retry this test with the above change in methodology, and
let me know if (a) the pull is still slow the first time and (b) if it's
much faster the second time (after the reverse unpull/pull)?

Thanks!

David (who is doing darcs hacking in the morning, before the other grownups
wake up)
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] Re: announcing darcs 2.0.0pre2

2007-12-17 Thread David Roundy
Thanks for the timings.  Alas, I'm leaving in the morning for vacation, so
I'm not sure when I'll have time to profile these operations.  And I'm
still puzzling over how to speed up darcs get (i.e. the long discussion of
http pipelining, which will not, of course, do anything to help the poor
folks stuck with ssh...).

The 100x slower pull is indeed a bit puzzling.  I can't help but wonder if
it's the hash-checking (but that seems very unlikely)...

David

On Mon, Dec 17, 2007 at 12:29:20PM +, Simon Marlow wrote:
 Continuing my performance tests, I tried unpulling and re-pulling a bunch 
 of patches in a GHC tree.  I'm unpulling about 400 patches using 
 --from-tag, and then pulling them again from a local repo.  Summary: darcs2 
 is about 10x slower than darcs1 on unpull, and on pull it is 100x slower in 
 user time but only 20x slower in elapsed time.
 
 In both cases, the repository was on an NFS filesystem.  In the darcs2 
 case, the repository I was pulling from was on the local disk, and I'm also 
 using a cache (NFS-mounted).  The darcs2 repository has been optimized, but 
 the darcs1 repository has not (at lesat, not recently).  I did all of these 
 a couple of times to eliminate the effects of cache preloading etc., the 
 times reported are from the second run.
 
 --- darcs 1:
 
 $ time darcs unpull --from-tag 2007-09-25 -a
 Finished unpulling.
 35.17s real   5.77s user   1.00s system   19% darcs unpull --from-tag 
 2007-09-25 -a
 
 $ time darcs pull ~/ghc-HEAD -a
 Pulling from /home/simonmar/ghc-HEAD...
 33.51s real   3.62s user   1.05s system   13% darcs pull ~/ghc-HEAD -a
 
 --- darcs 2:
 
 $ time darcs2 unpull --from-tag 2007-09-25 -a
 Finished unpulling.
 385.22s real   52.18s user   12.62s system   16% darcs2 unpull --from-tag 
 2007-09-25 -a
 
 $ time darcs2 pull /64playpen/simonmar/ghc-darcs2 -a
 Finished pulling and applying.
 668.75s real   290.74s user   15.03s system   45% darcs2 pull 
 /64playpen/simonmar/ghc-darcs2 -a

-- 
David Roundy
Department of Physics
Oregon State University
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe