The Linux kernel, timed on both sides.

Sailfork against stock git on the same machine, measuring only what the server does.

Results

Time to

Sailfork Stock git

  • Full clone

    11,845,633 objects

    0.14 ms
    4.50 s

    32,158x

  • Shallow clone

    101,713 objects

    0.18 ms
    2.86 s

    15,863x

  • Fetch 100 commits

    8,434 objects

    0.32 ms
    195.26 ms

    610x

Log scale. Server time on linux.git, the median of 5 runs on one Apple M4 Max, against git 2.54 with a pack bitmap.

CPU to serve 1 GB of a full clone

Sailfork
0.591 s
Stock git
4.052 s
6.9x less CPU for every gigabyte sent, so the same server carries more clones.

Every number

OperationServerFirst byteWhole packPack size
Full clone 11,845,633 objectsSailfork0.14 ms1.89 s2.17 GiB
git 2.544.50 s8.89 s2.03 GiB
Shallow clone 101,713 objectsSailfork0.18 ms219.2 ms288.16 MiB
git 2.542.86 s13.39 s273.74 MiB
Fetch 100 commits 8,434 objectsSailfork0.32 ms1.7 ms1.95 MiB
git 2.54195.26 ms216.9 ms9.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.

Watch it replayed

Pack size, against stock git

  • Full clone
    2.17 GiB
    2.03 GiB
    +7.0%
  • Shallow clone
    288.16 MiB
    273.74 MiB
    +5.3%
  • Fetch 100 commits
    1.95 MiB
    9.00 MiB
    −78.3%
Each row is scaled to its larger pack. Clone packs are a little larger because Sailfork sends them as stored instead of recompressing them for each clone; the fetch pack is smaller.

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

Measured here

The server sends the pack

1.89 s on Sailfork, first byte at 0.14 ms

Not measured

The network carries it

Depends on your connection

Not measured

Your machine resolves deltas

Depends on your machine

The three legs of a real clone, not drawn to scale. A full Linux clone on your laptop takes longer than the server’s part, on Sailfork or anywhere else; what the numbers show is that Sailfork starts sending at once.