Programmer Thoughts

By John Dickinson

git vs. bzr

September 18, 2010

Whole wars can be (and have been) fought over the best version control system. I’ve been using git for the last couple of years or so, and I’m very happy with it. Recently, a project I contribute to switched to use bzr and launchpad; I’ve now been using bzr and launchpad nearly exclusively for the last few months.

Both git and bzr have their peculiar ways of doing version control. Both support similar functionality, but the biggest difference I’ve noticed is that of speed. git is hands-down faster. The slowness of bzr is painful and slow enough to cause me to loose momentum while I’m coding.

I tracked a few numbers this morning. The git commands are running against a project hosted on github, and the bzr commands are running against a project hosted on launchpad. Although the speed of these two sites contribute to the overall numbers, development processes often dictate pushing code to a hosting site. Therefore, these examples show the performance of the entire version control system, including a remote hosting site.

$ time git pull
Already up-to-date.
real	0m1.953s
user	0m0.148s
sys	0m0.138s

$ time bzr pull
No revisions to pull.                                                                                                                                
real	0m7.968s
user	0m0.651s
sys	0m0.277s

$ time git status
# On branch master
nothing to commit (working directory clean)
real	0m0.026s
user	0m0.008s
sys	0m0.008s

$ time bzr status
real	0m7.732s
user	0m0.528s
sys	0m0.330s

In my experience, git is fast enough so as not to be noticed. bzr is painfully slow–slow enough for me to actively try to not commit and push changes as often as I could or should.

This work is licensed under a Creative Commons Attribution 3.0 Unported License.

The thoughts expressed here are my own and do not necessarily represent those of my employer.