Git é rápido. Todo mundo, mesmo os usuários mais pesados desses outros
sistemas geralmente dão esse título ao Git. Comparado ao SVN e Perforce
isso é óbvio, já que todas as operações são locais. Entretando, mesmo comparado
com outros DSCMs, Git é muito rápido.
Parte disso provavelmente é porque ele foi construído para trabalhar com a
kernel do Linux, o que significa que ele teve que lidar efetivamente
com repositórios enormes desde o primeiro dia.
Outra razão é que o Git é escrito em C, e ainda outra razão é que os
desenvolvedores principais são, por minha experiência, muito muito
preocupados com isso.
A seguir vários benchmarks que eu rodei em 3 cópias do código fonte do
repositório do Django em 3 diferentes SCMs: Git, Mercurial e Bazaar. Eu
também testei algumas dessas coisas no SVN, mas acredite, é muito lento -
basicamente pegue os números do Bazaar e adicione a latência da rede...
O resultado final é que para qualquer coisa, menos adicionar novos arquivos,
Git foi o mais rápido. (Também em commits grandes, foi basicamente a mesma
coisa que o Hg, mas o commit que eu testei foi tão grande que provavelmente
ninguém fará nada parecido - em commits normais o Git é muito mais rápido).
|
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 (Grande) |
12.480s |
12.500s |
23.002s |
Commit (Pequeno) |
0.086s |
0.517s |
1.139s |
Branch (Frio) |
1.161s |
94.681s |
82.249s |
Branch (Quente) |
0.070s |
12.300s |
39.411s |
Os números de branches frios e quentes são números da primeira e segunda
vez que eu fiz branch de um repo - o segundo número sendo um branch com um
cache de disco quente.
Deve ser notado que embora os números de 'add' sejam muito mais lentos,
isso foi para uma operação enorme - mais de 2000 arquivos. Para a maioria
das coisas que a maioria das pessoas faz no dia a dia, operações de adição (add)
em qualquer desses sistemas vai tomar somente uma fração de segundo. Todas
as outras operações testadas aqui (exceto para o grande commit, possivelmente)
são mais indicativas das coisas que você realmente faz no dia a dia.
Esses números realmente não são difíceis de recriar, simplesmente clone o
projeto Django em cada um dos sistemas e teste alguns dos mesmos comandos em
cada um.
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