Bazaar performance

Guido Ostkamp bazaar at ostkamp.fastmail.fm
Thu May 15 22:25:40 BST 2008


Hello,

after finishing a conversion from Git to Bazaar with help of Ian 
Clatworthy (thanks, again, Ian!), I did some initial performance tests 
with Bazaar compared to Git and Mercurial on my large repository (~11000 
files, > 41000 changesets, repo size > ~500 MB).

These are the results (with bazaar 1.4):

Cloning from remote host via ssh/sftp:

Bazaar:    6:31 min   (bzr clone sftp://...)
Mercurial: 3:39 min   (hg clone ssh://...)
Git:       1:23 min   (git clone ssh://...)

Cloning new local branch:

Bazaar:    2;49 min   (bzr clone master branch # in shared repo)
Mercurial: 0:29 min   (hg clone master branch)
Git:       0:07 min   (git clone master branch)

Displaying logging info:

Bazaar:    0:11   min (bzr log | head)
Mercurial: 0:00.7 min (hg log | head)
Git:       0:00.3 min (git log | head)

Displaying logging info -v / -p:

Bazaar:    0:42   min (bzr log -v | head)
Mercurial: 0:00.7 min (hg log -v | head)
Git:       0:00.4 min (git log -p | head)

Adding ~6 MB file:

Bazaar:    0:12.6 min (bzr add file; bzr commit)
Mercurial: 0:02.5 min (hg add file; hg commit)
Git:       0:00.2 min (git add file; git commit)

Removing file:

Bazaar:    0:11.5 min (bzr rm file; bzr commit)
Mercurial: 0:01.7 min (hg rm file; hg commit)
Git:       0:00.3 min (git rm file; git commit)

So in any of the cases, bazaar is unfortunately the slowest system. 
Especially the poor performance on logging information queries appears 
strange.

I would be interested to understand the technical reasons.

As far as I know, the main differences between bazaar and the other two 
systems are that Bazaar is dealing with directory versioning, while the 
others are not and of course that Git is implemented in C instead of 
Python.

But does directory versioning really count in that much?

Do Git and/or Mercurial have data structures that Bazaar doesn't have 
which support faster access?

Regards

Guido



More information about the bazaar mailing list