Git 很快。大家都這麼說,甚至那些其他系統的死忠支持者也都會給予 Git 這個評價。 使用Git,所有的操作都是在本地端的特性讓它比 SVN 與 Perforce 跑得快許多,它們兩個都需要網路連線才能完成大部分操作。然而,就算是與其他也是在本地端操作的 DSCM 比較,Git 還是快非常多。
一部分的原因可能是因為它是建立來用在 Linux 核心上的,這表示它從一開始就必須有效率的處理非常大的倉儲。此外,因為 Git 是用 C 寫的,減少了使用其他高階語言在執行期的開銷。 另外一個 Git這麼快地原因是因為它的主要開發者們將這個列為設計的目標。
底下是一些我測試的數據,使用 Django 的原始碼倉儲與三種不同的 SCM: Git, Mercurial和 Bazaar。 我也用 SVN 測試了一些同樣的項目,不過相信我,它慢更多 — 基本上是 Bazaar 的數字再加上網路的延遲...
測試的結果是所有操作,除了加新檔案之外都是 Git 最快。 (還有大量的提交操作,Hg基本上一樣快,可是我測試的提交量是如此之大,你平常不太可能有同樣的的量 — 正常的提交操作在 Git 快多了。)
| Git | Hg | Bzr |
Init | 0.024s | 0.059s | 0.600s |
Add | 8.535s | 0.368s | 2.381s |
Status | 0.451s | 1.946s | 14.744s |
Diff | 0.543s | 2.189s | 14.248s |
Tag | 0.056s | 1.201s | 1.892s |
Log | 0.711s | 2.650s | 9.055s |
Commit (Large) | 12.480s | 12.500s | 23.002s |
Commit (Small) | 0.086s | 0.517s | 1.139s |
Branch (Cold) | 1.161s | 94.681s | 82.249s |
Branch (Hot) | 0.070s | 12.300s | 39.411s |
Cold 和 Hot 分支數字是我第一次和第二次分支一個倉儲 — 第二次分支的數據有使用磁碟快取。
要特別注意的是雖然 'add' 操作的速度慢很多,但這是在大量的檔案 — 超過 2000 個 —上進行新增操作 。 對於大部分人日常使用來說,在任何系統上新增操作都只會用到幾分之一秒而已。 其他測試到的操作 (除了大量提交...大概)應該與你日常用到的差不多。
這些數字不會很難重現,只要用不同的系統 clone 一份 Django 計劃然後試試這些指令就可以了。
git clone git://github.com/brosner/django.git dj-git
hg clone http://hg.dpaste.com/django/trunk dj-hg
bzr branch lp:django dj-bzr
svn checkout http://code.djangoproject.com/svn/django/trunk dj-svn