[darcs-devel] initial performance measurement of darcs-2

zooko zooko at zooko.com
Wed Jan 23 15:43:53 UTC 2008


On Jan 23, 2008, at 5:02 AM, David Roundy wrote:

> 1. Am I correct that all these timings involve push -a and pull -a  
> when
> there is nothing to push or pull?

Yes.

> 2. Did you enable a global cache directory with ~/.darcs/sources

No.  There is only one darcs-2-format repository on each machine so  
it didn't occur to me that a global cache could be useful.

> 3. Did you repeat your measurements? In particular, if you use a  
> global
> cache the second time you push/pull with either --hashed on both  
> sides or
> --darcs-2 on both sides should be lightning fast.  (And if it's  
> not, I want
> to figure out why.)

Okay I just did it again.  For each operation I did four trials and  
am reporting the best (fastest):

A.  darcs 1.0.9, old-format local repo, old-format remote repo
B.  darcs 2 pre, hashed-format local repo, old-format remote repo
B2. same but with a newly created global cache on the local side
B3. same but with an already-populated global cache on the local side
C.  darcs 2 pre, new-format local repo, new-format remote repo
C2. same but with a newly created global cache on the local side
C3. same but with an already-populated global cache on the local side

column 1: push, column 2: pull ; all values in seconds

A.	 7.9		18.2
B.	16.3	14.7
B2.	14.6	19.1
B3.	16.0	14.3
C.	 9.0		12.1
C2.	11.4	15.7
C3.	 9.9		 9.8

Note that these measurements varied by many seconds -- up to 100% in  
some runs -- possibly because of network contention or disk or CPU  
contention on the remote repo.  So consider them to be only broad  
general measurements of performance, and also use these measurements  
as reminders that your handling of network latency and resource  
contention are often more important than your algorithm efficiency.


So far my general feeling is that switching over to darcs-2 and using  
hashed repository format (the B rows) would not be an improvement  
over using darcs-1, and that requiring everyone who wants to share  
source with me to switch to darcs-2 and use darcs-2-repository-format  
(the C rows) might be an improvement, but it isn't clear yet, and  
obviously having a "flag day" style upgrade like that is a deterrent.


Oh, by the way, I suspect that darcs on windows (the "local" machine  
in these measurements) isn't actually finding the global cache (I  
told it "~/.darcs/cache", and I guess it doesn't know what I mean by  
"~"), so you can probably consider the 1/2/3 rows as just showing the  
noise in the system rather than actually using the cache.  :-)

I'll try to explain to darcs-on-windows where to do caching, later.


Regards,

Zooko



More information about the darcs-devel mailing list