[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