Benchmarks
Every number on this page comes from a file in the repository. Each table names the machine, the system, the date, the command and the source.
The data is generated by rift-gen with seed 7, profile sql, with a mutation starting at about one line in a thousand (--change-ratio 0.001, the default). Rift runs at --mem 256M. Peak memory is the resident set. Peak heap is Rift's own counter, the part --mem limits.
The largest pair measured so far is 10 GiB. No pair above that has been run.
Apple M1, 1 GiB and 10 GiB
- Hardware: Apple M1, 16 GB RAM, internal SSD.
- System: macOS, warm page cache.
- Date: not recorded in the README; the table entered the repository on 2026-11-05.
- Commands:
bench/run.shprints the full results with the commands and seeds.bench/data.shregenerates the data. - Source: the Benchmarks section of
README.mdat thev0.1.0tag. The README no longer carries it.
| Pair | Tool | Time | Peak memory |
|---|---|---|---|
| 1 GiB | rift --summary | 1.26 s | 127.7 MiB |
| 1 GiB | rift (full diff) | 0.93 s | 130.8 MiB |
| 1 GiB | system diff | 17.55 s | 3.2 GiB |
| 10 GiB | rift --summary | 13.37 s | 136.5 MiB |
| 10 GiB | rift (full diff) | 26.16 s | 136.5 MiB |
| 10 GiB | diff, git diff | did not run: needs more than 16 GB of RAM |
git diff has no 1 GiB row: it treats files over 512 MiB as binary and prints no diff. On the 1 GiB pair Rift's heap peaked at 83.5 MiB, and on the 10 GiB pair at 94.1 MiB.
Intel Core i5-10600, 256 MiB to 2 GiB
- Hardware: Intel Core i5-10600 (6 cores, 12 threads), 16 GB RAM, bare metal.
- System: Ubuntu 26.04.1 LTS, Linux 7.0.0-42, files in tmpfs, so the run measures CPU, memory and the algorithm, not the disk.
- Date: 2026-11-06.
- Version: the run used Rift at the
v0.1.0tag. - Command:
bench/linux-safe.sh. The runs wererift --stats --mem 256M a b,rift --summary --mem 256M a b,diff a bandgit diff --no-index a b, plus--mem 64Mand--mem 1Gfor the memory rows. Each time is the median of three runs. - Source:
bench/results/linux-intel-core-i5-10600-2026-11-06/report.mdandresults.json, in the same directory.
| Pair | Tool | Time | Peak memory | Peak heap |
|---|---|---|---|---|
| 256 MiB | rift (full diff) | 0.28 s | 112.8 MiB | 83.2 MiB |
| 256 MiB | GNU diff | 1.62 s | 776.3 MiB | |
| 256 MiB | git diff --no-index | 2.57 s | 1.0 GiB | |
| 1 GiB | rift (full diff) | 0.69 s | 113.0 MiB | 83.6 MiB |
| 1 GiB | rift --summary | 0.51 s | 113.0 MiB | 83.6 MiB |
| 1 GiB | rift --mem 64M (full diff) | 0.54 s | 30.7 MiB | 21.0 MiB |
| 1 GiB | rift --mem 1G (full diff) | 1.20 s | 436.3 MiB | 329.2 MiB |
| 1 GiB | GNU diff | killed at the memory cap | ||
| 1 GiB | git diff --no-index | 42.59 s | 5.3 MiB | |
| 2 GiB | rift (full diff) | 1.20 s | 113.4 MiB | 83.6 MiB |
| 2 GiB | rift --summary | 0.86 s | 113.0 MiB | 83.6 MiB |
| 2 GiB | rift --mem 64M (full diff) | 1.02 s | 30.5 MiB | 21.0 MiB |
| 2 GiB | rift --mem 1G (full diff) | 1.75 s | 436.8 MiB | 330.0 MiB |
GNU diff was capped at 3 GiB of memory, and the cap killed it on the 1 GiB pair. git diff --no-index finished that pair in about 42 s because it printed no diff: it treats the files as binary, and its output was 241 bytes.
The two extra rows for each size show what --mem does. On the 1 GiB pair, --mem 64M took a heap of 21.0 MiB and --mem 1G took 329.2 MiB. The full report, with the CSV pairs and the thread scaling, is in the file above.
What these numbers do not show
- Disk speed on the Linux run: the files were in RAM.
- Other tools than GNU
diffandgit diff. - A run above 10 GiB.
- Different machines side by side. Compare the memory between the two tables, not the times.