Comparison between CVS, SVK-1.00 and subversion-1.2.0
Here is a comparison on a repository with 18647 revisions (after being converted from cvs using cvs2svn). trunk has 5302 files and 652 directories.
| cvs local | svk fsfs | svk bdb | svn fsfs | svn bdb repository size | 311Mb | 1010Mb | 1014Mb | 1010Mb | 1014Mb checkout (cold) | 26.0s | 90.8s | 106.9s | 155.8s | 175.4s checkout (hot) | 4.4s | 24.9s | 23.9s | 136.6s | 59.5s info (cold) * | n/a | 111.7s | 128.0s | 0.3s | 0.2s info (hot) | n/a | 10.3s | 19.8s | 0.0s | 0.0s status (no local changes) | 5.3s | 4.2s | 3.8s | 13.7s | 15.0s update (already up to date) | 5.0s | 0.6s | 0.6s | 11.0s | 11.7s switch (to a tag) | 24.9s | 14.8s | 23.6s | 24.8s | 18.8s diff (from tag to branch) | 10.2s | 2.0s | 1.3s | 1.1s | 0.7s
These tests where run on a Dual 2Ghz G5 running MacOS X 10.4.1 using the stock cvs binary and the svn and svk binaries from the SVN-1.00-2.dmg.
The repositories were always local and being accessed though file://, including cvs.
- svk info actually builds a cache which provides more info about the current working copy like it's merge history, so it's not really equivalent to svn info. This cache is also used to make svk switch safe, in that it won't switch to something that doesn't have a common ancestor with the current wc.
Comparison between CVS, SVK-1.00 and subversion-1.1.4
Here is a comparison on a repository with 20044 revisions (after being converted from cvs using cvs2svn). trunk has 7377 files and 1089 directories.
|cvs local||svk fsfs||svk bdb||svn fsfs||svn bdb|
|status (no local changes)||22.2s||5.7s||5.6s||24.6s||20.2s|
|update (already up to date)||25.2s||0.6s||0.6s||16.3s||17.8s|
|switch (to a tag)||66.4s||82.2s||424.4s||28.5s||33.3s|
|diff (with a branch)||58.7s||1.6s||1.0s||3.6s||1.2s|
All tests where run on a Dual 2Ghz G5 running MacOS X 10.4 using the stock cvs binary and the svn and svk binaries from the SVN-1.00.dmg.
The repositories were always local and being accessed though file://. The first checkout was also run twice at the start of each series to preheat the buffer cache.