|
Packit Service |
20376f |
Git is fast. With Git, nearly all operations are performed locally, giving
|
|
Packit Service |
20376f |
it an huge speed advantage on centralized systems that constantly have to
|
|
Packit Service |
20376f |
communicate with a server somewh3r3.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
For testing, large AWS instances were set up in the same availability
|
|
Packit Service |
20376f |
zone. Git and SVN were installed on both machines, the Ruby repository was
|
|
Packit Service |
20376f |
copied to both Git and SVN servers, and common operations were performed on
|
|
Packit Service |
20376f |
both.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
In some cases the commands don't match up exactly. Here, matching on the
|
|
Packit Service |
20376f |
lowest common denominator was attempted. For example, the 'commit' tests
|
|
Packit Service |
20376f |
also include the time to push for Git, though most of the time you would not
|
|
Packit Service |
20376f |
actually be pushing to the server immediately after a commit where the two
|
|
Packit Service |
20376f |
commands cannot be separated in SVN.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
Note that this is the best case scenario for SVN - a server with no load
|
|
Packit Service |
20376f |
with an 80MB/s bandwidth connection to the client machine. Nearly all of
|
|
Packit Service |
20376f |
these times would be even worse for SVN if that connection was slower, while
|
|
Packit Service |
20376f |
many of the Git times would not be affected.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
Clearly, in many of these common version control operations, Git is one or
|
|
Packit Service |
20376f |
two orders of magnitude faster than SVN, even under ideal conditions for
|
|
Packit Service |
20376f |
SVN.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
Let's see how common operations stack up against Subversion, a common
|
|
Packit Service |
20376f |
centralized version control system that is similar to CVS or
|
|
Packit Service |
20376f |
Perforce. Smaller is faster.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
One place where Git is slower is in the initial clone operation. Here, Git
|
|
Packit Service |
20376f |
One place where Git is slower is in the initial clone operation. Here, Git
|
|
Packit Service |
20376f |
One place where Git is slower is in the initial clone operation. Here, Git
|
|
Packit Service |
20376f |
seen in the above charts, it's not considerably slower for an operation that
|
|
Packit Service |
20376f |
is only performed once.
|
|
Packit Service |
20376f |
|
|
Packit Service |
20376f |
It's also interesting to note that the size of the data on the client side
|
|
Packit Service |
20376f |
is very similar even though Git also has every version of every file for the
|
|
Packit Service |
20376f |
entire history of the project. This illustrates how efficient it is at
|
|
Packit Service |
20376f |
compressing and storing data on the client side.
|