Every benchmark body we run, in one place. These are instruments, not trophy cases — a kernel Koru cannot express, a body without a live data feed, a number that got worse: all of it stays on this page, named.
7 benchmark bodies · 1 with live, reproducible boards. Bodies with a live board rank first; a write-up without one is a wiring gap, and it shows.
Faithful naive kernels — same algorithm, same parameters, no tricks — against C, Rust, Haskell and Osprey under one hyperfine protocol. Reference corpus and the Osprey column vendored from the Osprey language suite (MIT); measured on a shared, loaded M2 Pro, not a quiesced rig.
| kernel | Koru | C | Rust | Haskell | OCaml | Osprey | Koru / C |
|---|---|---|---|---|---|---|---|
| ackermann | 148.5 ±2.5 | 149.5 ±25.6 | 141.0 ±2.3 | 81.7 ±5.2 | — | 134.2 ±2.8 | 0.99× |
| coins | 90.0 ±3.1 | 89.8 ±4.8 | 94.6 ±2.9 | 66.2 ±1.4 | — | 89.8 ±3.4 | 1.00× |
| collatz | 15.9 ±0.7 | 14.1 ±2.0 | 15.2 ±0.4 | 42.9 ±2.9 | — | 16.5 ±0.4 | 1.13× |
| coprime | 77.1 ±3.8 | 75.7 ±3.3 | 76.5 ±2.7 | 130.1 ±10.8 | — | 80.5 ±5.3 | 1.02× |
| digitsum | 9.6 ±1.7 | 9.3 ±4.8 | 8.7 ±1.4 | 42.7 ±1.5 | — | 7.6 ±0.9 | 1.03× |
| factorial | 44.6 ±3.6 | 42.7 ±0.8 | 42.5 ±0.5 | 67.4 ±3.7 | — | 42.6 ±0.8 | 1.04× |
| fib | 40.8 ±5.2 | 36.3 ±3.0 | 29.8 ±2.0 | 72.7 ±6.1 | — | 30.2 ±1.2 | 1.12× |
| gcdsum | 93.8 ±8.1 | 88.8 ±5.2 | 101.0 ±6.8 | 136.2 ±14.1 | — | 214.2 ±124.9 | 1.06× |
| hanoi | 87.5 ±5.5 | 82.3 ±8.6 | 78.1 ±3.0 | 87.4 ±3.0 | — | 95.0 ±6.7 | 1.06× |
| isqrt | 12.8 ±1.2 | 16.5 ±0.6 | 15.4 ±1.8 | 90.5 ±33.7 | — | 24.9 ±5.0 | 0.77× |
| josephus | 43.0 ±4.4 | 38.3 ±2.0 | 37.4 ±0.9 | 54.2 ±5.5 | — | 39.0 ±2.1 | 1.12× |
| mutual | 18.8 ±2.4 | 19.9 ±1.5 | 20.6 ±2.1 | 96.7 ±50.5 | — | 24.2 ±5.9 | 0.95× |
| nestedloop | 70.9 ±5.3 | 55.6 ±2.4 | 55.8 ±2.2 | 84.7 ±6.7 | — | 59.3 ±3.8 | 1.28× |
| pascal | 38.5 ±3.8 | 48.9 ±4.1 | 39.9 ±2.9 | 204.5 ±24.7 | — | 52.2 ±7.1 | 0.79× |
| powmod | 37.8 ±4.3 | 31.3 ±1.0 | 31.6 ±1.8 | 86.5 ±8.8 | — | 34.6 ±4.0 | 1.21× |
| primes | 10.0 ±0.9 | 10.8 ±2.1 | 10.8 ±1.0 | 43.2 ±6.2 | — | 12.3 ±1.4 | 0.92× |
| tak | 53.0 ±3.7 | 51.4 ±2.8 | 49.1 ±3.3 | 132.5 ±12.6 | — | 53.8 ±5.0 | 1.03× |
| textstats | 3.4 ±0.8 | 3.7 ±0.6 | 5.2 ±1.9 | 34.7 ±4.5 | — | 5.3 ±0.8 | 0.93× |
| wordfreq | 7.3 ±5.1 | 2.8 ±1.1 | 8.4 ±1.4 | 20.4 ±1.8 | — | 23.3 ±1.6 | 2.64× |
Mean wall-clock ms, lower is better · '—' = toolchain absent or no port · 'WRONG' = failed the oracle, excluded from timing · Koru / C is the ratio of means from this run only.
No Koru port yet — each names something the language cannot express today. They go green when the language grows the capability, never before:
koruc build (ReleaseFast)cc -O2rustc -C opt-level=3 -C overflow-checks=offghc -O2ocamlopt -O3 -unsafeosprey --compile (release)Apple clang version 21.0.0 (clang-2100.0.123.102)rustc 1.96.0-nightly (b41f22de2 2026-03-08)ghc 9.10.3osprey 0.0.0-devMEASURED on the shared developer workstation named above, under live load (see machine.load_avg — the 1/5/15-min load average at run time) — NOT a quiesced benchmark rig. Read every number as a same-machine, same-protocol ballpark, not a precise cross-language ranking: run-to-run jitter on a loaded box routinely exceeds the gaps between the compiled languages. Wrong-answer binaries are excluded from timing. Absent toolchains are reported absent, never estimated. No cross-language claim leaves this board unless re-verified under the target's exact rules.
Source, harness and raw results: github.com/korulang/koru-benchmarks
The Primes drag-race sieve — where "faithful" earned its capital letters, and what a category boundary does to a comparison.
Dense numeric workloads through std/kernel — idiomatic high-level Koru against hand-specialized C and Rust.
The Orisha HTTP server under load, measured against nginx on the same box.
The register-machine story: recursion the compiler proves is a loop, and what that does to the emitted code.
How small the artifacts get — binary size and deployment weight.
The comptime interpreter, measured honestly while it is still slow. Parked, red, and on the page anyway — that is the point of the page.