vc-test

Sheet1

Distributed Version Control Systems (DVCS)
Version
Git
1.6.3.3
Hg
1.3.1
Bzr
1.17
Benchmark test
2009-08-16
test script:
Debian/Ext3
DVCS PDF
Conclusions
Git
Numbers speak for themselves
Hg
In average 10x slower than Git. The biggest problems are: 
- commit performance
- SSH Network clone performance (very slow)
Bzr
In average 1.4x..2x slower than Hg; The biggest problems are:
- "pure clone" and commit performance
- cloning speed; extra "hoops" are needed to get efficient branching performance
Notes
The tests are *artificial* by nature; Nobody commits over 7000 files in one pack
It would be interesting to import multiple kernels and see how the repos perform with more commits (log, branch, clone)
Branching in Bzr is speedy only if shared repositories are used: 'branch & switch' (1)
The times should not be considered *absolute*, but relative indication of speeds between different DCVS
For the purpose of relative testing, the used OS, CPU, Memory, HD or network information is ignored (absolute values aren't compared head-to-head)
Results (raw data)
Version
Size MiB
Kernel sources
2.6.30
326.6
Note: Kernel sources were from Debian source package (*.deb)
Times measured in seconds (real time)
TODO 
= the test script currently lacks the test
(1) = Case of Bzr 'Shared repo': using command "switch"
will be implemented later
(2) = git --depth 1; bzr co --lightweight
(3) Native protocol was used where available: like bzr+ssh://  Hg took staggering 23 minutes 
(4) Case of Bzr 'Shared repo':  top-level shared repo size was not counted with
Default  setup / No special options
Additional repo init options
PERCENTAGE SUMMARY
Kernel import
--pack-0.92
--2a
--rich-root-pack
init-repo --2a
Difference in percentages (%); lower = better
(default)
(new)
(old)
Shared repo
(defaults)
--2a
Shared repo
Git 1.6.3.3
Hg 1.3.1
Bzr 1.17
Bzr 1.17
Bzr 1.17 
Bzr 1.17
Hg vs. Git
Bzr vs. Git
Bzr vs. Hg
Bzr vs. Hg
init
0.03
0.05
0.90
0.90
0,75 
1.50
67
2900
1700
2900
add
26.00
1.80
5.50
5.50
5,50 
6.20
-93
-79
206
244
commit
0.60
45.00
48.00
51.00
47.00
62.00
7400
7900
13
38
 
Patch Kernel sources to previous version (2.6.NN – 1); 7552 files in one commit
 
Git
Hg
Bzr
 
add
6.30
0.50
2.80
3.20
3.00
3.50
-92
-56
540
600
commit
0.50
20.00
37.00
24.00
39.00
25.00
3900
7300
20
25
25
log
0.01
0.15
0.19
0.19
0.19
0.20
1400
1800
27
33
33
diff (one file: head/tip - 1)
TODO
0.50
3.20
1.11
3.50
122
branch
0.01
0.10
71.00
71.00
71.00
0.30
(1)
900
200
clone local full
20.00
30.00
71.00
71.00
71.00
71.00
50
255
137
137
137
clone local lightweight (git, bzr only)
26.00
N/A
42.00
55.00
45.00
(2)
clone local --stacked (bzr only)
N/A
41.00
50.00
38.00
clone over network: ssh push
TODO
1390.00
240.00
280.00
240.00
(3)
-80
clone over network: ssh pull
320.00
750.00
675.00
750.00
(3)
134
Clone over network: http pull
TODO
TODO
TODO
1232
2325
169
99
65
<= colored average
Repository size
326.60
<= original source
199
<= Group all average
Git
Hg
Bzr
Hg vs. Git
Bzr vs. Git
Bzr vs. Hg
init and commit
460.10
466.63
451.63
447.20
451.60
400.30
(4)
1
-2
-4
patch and commit
507.70
469.89
457.52
488.69
457.50
400.30
-7
-10
4
clone local full
506.80
466.95
453.90
485.64
454.00
400.30
-8
-10
4
clone local lightweight
506.80
N/A
353.61
353.61
clone --stacked (bzr only)
353.69
353.69
clone local full % bigger
55.17
42.97
38.98
48.70
39.01
22.57
-5
-7
1
<= Percentage difference; average
Graphics from the values above
Kernel import (seconds): init (blue; mostly not visible),add (lime), commit (red)
Patch Kernel Sources (seconds): git (blue), Hg, Bzr
Repository sizes compared to original sources (MiB): Git (blue), Hg, Bzr

Sheet2

Sheet3