Git 很快。 包括大部分其他系统的忠实用户在内的人都这么评价 Git。
Git 所有操作都在本地进行的特性使它比 SVN 和 Perforce 要快,因为后两者的普通操作都要进行网络连接。
即使与其他允许本地操作的分布式 SCM 相比,Git 也要快得多。
部分原因可能是因为 Git 是被创造用来供 Linux 内核开发使用的,而那意味着从一开始它就需要高效处理大型库。
此外,Git 是用 C 语言编写的,这减少了运行期与高层语言进行协作的开销。Git 这么快的另一个原因是它的主要开发者把这当成设计目标。
我使用 Git,Mercurial 和 Bazaar 这三个不同的 SCM 各存放一份 Django 的源代码,进行了一些测试,下面是一些测试结果。
我也用 SVN 进行了一些测试,不过相应我,它要更慢 — 基本上是 Bazaar 的测试结果加上网络延迟...
测试结果表明除了增加新文件以外,所有的操作都是 Git 最快。(此外在一些非常大的提交操作测试中,Hg 基本上与 Git 一样快,不过我测试的那种提交操作实在太大,
你不大可能会遇到那种情况 — Git 处理普通提交比其他 SCM 要快得多)
|
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' 操作 Git 要慢很多,但这是在大量文件 — 超过 2000 个 — 上进行的新增操作。
对于大部分人的日常工作来说,任意一个系统上的新增操作只会花费几分之一秒。其他测试到的操作(可能除了大提交)都与日常使用到的相近。
这些测试结果并不难重现。只要用不同系统复制一份 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