The Linux kernel, timed on both sides.
Sailfork against stock git on the same machine, measuring only what the server does.
Results
Sailfork Stock git
Full clone
11,845,633 objects
0.14 ms4.50 s32,158x
Shallow clone
101,713 objects
0.18 ms2.86 s15,863x
Fetch 100 commits
8,434 objects
0.32 ms195.26 ms610x
CPU to serve 1 GB of a full clone
Every number
| Operation | Server | First byte | Whole pack | Pack size |
|---|---|---|---|---|
| Full clone 11,845,633 objects | Sailfork | 0.14 ms | 1.89 s | 2.17 GiB |
| git 2.54 | 4.50 s | 8.89 s | 2.03 GiB | |
| Shallow clone 101,713 objects | Sailfork | 0.18 ms | 219.2 ms | 288.16 MiB |
| git 2.54 | 2.86 s | 13.39 s | 273.74 MiB | |
| Fetch 100 commits 8,434 objects | Sailfork | 0.32 ms | 1.7 ms | 1.95 MiB |
| git 2.54 | 195.26 ms | 216.9 ms | 9.00 MiB |
On a full clone Sailfork sends the whole pack 4.7x faster; on a shallow clone, 61.1x; on a fetch of the last 100 commits, 127.6x. Serving a full clone also takes 6.86x less CPU per GB: 0.591 s against 4.052 s.
Pack size, against stock git
- Full clone +7.0%2.17 GiB2.03 GiB
- Shallow clone +5.3%288.16 MiB273.74 MiB
- Fetch 100 commits −78.3%1.95 MiB9.00 MiB
How it was measured
one Apple M4 Max, so the network plays no part
linux.git
11,845,633 objects
Sailfork
Sends stored pack segments
git upload-pack 2.54
With a pack bitmap, its fastest setup
In-process clock
First pack byte and whole pack. HTTP and the network are left out.
One warm-up, then 5 runs sorted by time. The middle one, the median, is the number reported.
- One repository
- A copy of linux.git, the Linux kernel, with 11,845,633 objects.
- One machine
- Both servers run on one Apple M4 Max, so the network plays no part. Stock git is upload-pack 2.54 with a pack bitmap, its fastest setup.
- Server time only
- The clock measures how long the server takes to send its first pack byte and the whole pack, in process, so HTTP and the network are left out.
- Median of five
- Each operation runs 5 times after one warm-up, and the median is reported.
What it leaves out
The server sends the pack
1.89 s on Sailfork, first byte at 0.14 ms
The network carries it
Depends on your connection
Your machine resolves deltas
Depends on your machine