Git очень быстрая. Все, даже очень продвинутые пользователи других
систем, отдают ей предпочтение в этом. В Git, все операции
выполняются локально, давая ей небольшое преимущество над Svn и
Perforce, обеим из которых требуется подключение к сети для
определенных операций. Так или иначе, даже сравнивая с
распеределенными СУВ, которые выполняют операции локально,
Git быстрее.
Отчасти это потому, что она создавалась для работы на ядром Linux,
а значит, что нужно было справляться с большими репозиториями
с первого дня. Как дополнение, она написана на C, что сокращает
накладные расходы выполнения языков высокого уровня. Другая
причина высокой скрости Git заключается в том, что создатели
сделали это целью проекта приложения.
Ниже приведены сравнительные тесты, которые я выполнил с тремя
копиями исходного кода проекта Django, с помощью трех различных
СУВ: 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 |
"Холодные" и "горячие" показатели ветвлений являются первым и вторым
разом создания ветки в репозитории — второе создание работает
с дисковых кэшем.
Необхдимо заметить, что хотя показатели 'add' являются более
медленными, операция выполнялась для большого количества файлов,
более 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