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 | koru-fold | C | cmap | Rust | Haskell | OCaml | Osprey | c3 | odin | Koru / C |
|---|---|---|---|---|---|---|---|---|---|---|---|
| ackermann | 143.8 ±1.4 | — | 130.3 ±1.8 | — | 135.8 ±2.3 | 78.5 ±2.9 | — | 131.9 ±1.8 | — | — | 1.10× |
| coins | 86.2 ±1.3 | — | 85.8 ±1.4 | — | 92.9 ±1.3 | 64.0 ±3.5 | — | 86.8 ±0.7 | — | — | 1.00× |
| collatz | 15.3 ±0.5 | — | 12.6 ±0.5 | — | 14.9 ±0.7 | 42.1 ±1.7 | — | 16.0 ±0.6 | — | — | 1.22× |
| coprime | 74.8 ±1.4 | — | 75.9 ±9.4 | — | 75.6 ±1.6 | 124.5 ±3.5 | — | 78.8 ±6.7 | — | — | 0.98× |
| digitsum | 8.0 ±0.7 | — | 6.4 ±0.3 | — | 7.0 ±0.6 | 42.5 ±1.7 | — | 7.2 ±0.4 | — | — | 1.24× |
| factorial | 41.7 ±1.0 | — | 42.1 ±0.8 | — | 42.4 ±0.7 | 67.2 ±4.6 | — | 42.1 ±0.6 | — | — | 0.99× |
| fib | 28.8 ±0.7 | — | 28.9 ±0.8 | — | 28.6 ±0.7 | 68.1 ±6.3 | — | 29.1 ±0.8 | 28.4 ±0.7 | 28.8 ±0.6 | 1.00× |
| gcdsum | 86.8 ±0.9 | — | 86.8 ±1.1 | — | 88.0 ±1.4 | 120.4 ±4.3 | — | 87.7 ±0.9 | — | — | 1.00× |
| hanoi | 69.2 ±1.1 | — | 68.6 ±1.1 | — | 69.8 ±1.0 | 84.2 ±4.9 | — | 68.9 ±0.7 | — | — | 1.01× |
| isqrt | 12.1 ±0.7 | — | 15.4 ±0.8 | — | 13.7 ±0.6 | 55.6 ±5.5 | — | 17.9 ±0.8 | — | — | 0.78× |
| josephus | 36.9 ±0.6 | — | 36.8 ±0.7 | — | 37.0 ±0.7 | 54.2 ±1.7 | — | 37.1 ±0.6 | — | — | 1.00× |
| mutual | 17.1 ±0.8 | — | 17.8 ±0.8 | — | 18.1 ±0.9 | 42.9 ±2.3 | — | 17.0 ±0.8 | — | — | 0.96× |
| nestedloop | 55.8 ±4.2 | — | 55.1 ±0.9 | — | 54.8 ±0.4 | 77.8 ±2.2 | — | 54.3 ±1.1 | 55.2 ±0.9 | 54.9 ±0.6 | 1.01× |
| pascal | 35.0 ±1.1 | — | 35.6 ±4.1 | — | 35.0 ±0.3 | 90.2 ±2.1 | — | 35.1 ±0.8 | — | — | 0.98× |
| powmod | 30.4 ±0.9 | — | 30.4 ±0.9 | — | 30.1 ±0.6 | 69.3 ±4.4 | — | 30.8 ±3.9 | — | — | 1.00× |
| primes | 8.5 ±0.3 | — | 8.7 ±0.4 | — | 9.2 ±0.6 | 30.1 ±1.7 | — | 8.9 ±1.9 | 9.2 ±0.4 | 8.8 ±0.5 | 0.98× |
| tak | 45.4 ±5.1 | — | 44.3 ±0.7 | — | 44.7 ±0.6 | 105.8 ±4.2 | — | 44.3 ±0.7 | — | — | 1.03× |
| textstats | — | — | 2.8 ±0.5 | — | 2.8 ±0.3 | 24.8 ±5.7 | — | 4.2 ±0.5 | — | — | |
| wordfreq | 4.4 ±0.4 | 1.7 ±0.3 | 1.9 ±0.3 | 3.0 ±0.4 | 6.7 ±1.1 | 18.1 ±1.1 | — | 22.0 ±0.9 | 6.2 ±0.5 | 5.1 ±0.7 | 2.32× |
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)koruc build (ReleaseFast) — flat fold/identity portcc -O2rustc -C opt-level=3 -C overflow-checks=offghc -O2ocamlopt -O3 -unsafeosprey --compile (release)cc -O2 (hand-rolled string map)c3c compile -O5odin build -o:speedApple 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-devApple clang version 21.0.0 (clang-2100.0.123.102)C3 Compiler Version: 0.8.3/Users/larsde/src/odin/odin version dev-2026-08:3e159a4MEASURED 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.