I've been doing benchmarks and testing on Subversion and Perforce to compare
them. In my tests Perforce has been consistently at least 2-4 times as fast
as Subversion, and sometimes much, much more than that. I've tried
Subversion access via both the http and svn ports; I didn't notice much
difference between the two.
On a repository with about 5 GB in 25,000 files, my first 'svn update' at
the root (with nothing needing updating) after booting the client machine
took 53 seconds in one test, 71 seconds in another. Subsequent updates took
2-3 seconds. A 'p4 sync' command at the root of the Perforce version of the
repository (again, with no updates needed) takes <1 second, every time.
My guess is that, since Perforce maintains a model of the client state on
the server, it doesn't have to do much of anything to figure out that
nothing needs to be done. Based on Subversion's timings I would guess that
it's having to page large amounts of the client's disk into memory to figure
out that no action is required.
This sort of thing really drags down the user experience on Subversion. Are
there any plans to maintain models of client state server-side, or is that
straying too far from the Subversion Way? Are there any ideas about how to
bring Subversion's performance more in line with Perforce's? This (along
with merge tracking, which I see is slated for fixing) is the main thing
that makes me hesitate to recommend Subversion for use at my company.
Received on Sat Sep 17 02:03:07 2005