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