Osprey cross-language benchmarks
-Osprey, Osprey (ARC), Osprey (GC), Rust, C, C# (AOT), Dart (AOT), OCaml, Haskell, Rust (wasm) — same naive algorithm and parameters in every language, native +
Osprey, Osprey (ARC), Osprey (GC), Rust, C, C# (AOT), Dart (AOT), OCaml, Haskell, Osprey (wasm), Rust (wasm) — same naive algorithm and parameters in every language, native
release builds, output checked against an integer oracle. CPU = hyperfine
mean ± stddev; memory = peak resident set size. Generated mechanically
by benchmarks/report.py; re-run with make bench.
Osprey is the fastest of all five languages on —. Lower is better; ★ marks an Osprey win.
+Osprey is the fastest of all five languages on —. Lower is better; ★ marks an Osprey win.
CPU time
-| Benchmark | Osprey | Osprey (ARC) | Osprey (GC) | Rust | C | C# (AOT) | Dart (AOT) | OCaml | Haskell | Rust (wasm) |
|---|---|---|---|---|---|---|---|---|---|---|
| ackermann | 914.6 ms | 864.2 ms | 4.949 s | 128.9 ms | 130.7 ms | 130.4 ms | 184.7 ms | 110.8 ms | 64.2 ms | 144.9 ms |
| binarytrees | 1.076 s | 1.301 s | 4.806 s | 726.8 ms | 356.2 ms | 127.3 ms | 124.7 ms | 52.3 ms | 16.8 ms | 810.4 ms |
| coins | 611.4 ms | 573.6 ms | 3.444 s | 82.6 ms | 81.0 ms | 101.6 ms | 122.3 ms | 100.5 ms | 53.9 ms | 110.8 ms |
| collatz | 480.2 ms | 463.9 ms | 2.669 s | 13.0 ms | 10.4 ms | 58.9 ms | 67.5 ms | 60.1 ms | 39.3 ms | 24.6 ms |
| coprime | 390.1 ms | 373.1 ms | 2.289 s | 65.7 ms | 63.7 ms | 78.2 ms | 113.2 ms | 90.7 ms | 105.7 ms | 77.3 ms |
| digitsum | 408.3 ms | 397.7 ms | 2.458 s | 5.7 ms | 5.6 ms | 16.4 ms | 29.2 ms | 18.7 ms | 32.3 ms | 19.1 ms |
| exprtree | 44.4 ms | 47.9 ms | 281.2 ms | 10.8 ms | 6.3 ms | 6.5 ms | 14.3 ms | 5.3 ms | 18.1 ms | 20.6 ms |
| factorial | 237.2 ms | 224.5 ms | 1.421 s | 35.5 ms | 35.4 ms | 37.2 ms | 51.7 ms | 48.7 ms | 57.4 ms | 48.6 ms |
| fib | 555.6 ms | 536.0 ms | 3.171 s | 17.6 ms | 18.4 ms | 36.6 ms | 52.2 ms | 24.2 ms | 48.0 ms | 37.3 ms |
| gcdsum | 331.1 ms | 323.4 ms | 1.996 s | 79.5 ms | 79.5 ms | 86.2 ms | 110.5 ms | 101.9 ms | 106.5 ms | 92.1 ms |
| hanoi | 1.254 s | 1.244 s | 7.289 s | 38.9 ms | 41.0 ms | 44.9 ms | 120.1 ms | 62.8 ms | 58.2 ms | 53.1 ms |
| isqrt | 445.2 ms | 444.3 ms | 2.717 s | 11.2 ms | 10.8 ms | 17.5 ms | 34.0 ms | 21.3 ms | 45.3 ms | 23.4 ms |
| josephus | 232.3 ms | 225.6 ms | 1.413 s | 33.5 ms | 33.4 ms | 35.3 ms | 43.2 ms | 41.6 ms | 45.7 ms | 45.3 ms |
| listops | 6.9 ms | 7.4 ms | 24.4 ms | 1.6 ms | 1.4 ms | 3.2 ms | 11.1 ms | 2.2 ms | 16.6 ms | 12.8 ms |
| mutual | 730.0 ms | 685.5 ms | 4.563 s | 13.2 ms | 12.9 ms | 21.6 ms | 329.6 ms | 28.3 ms | 40.0 ms | 30.0 ms |
| nestedloop | 866.9 ms | 862.0 ms | 5.372 s | 46.2 ms | 45.9 ms | 47.8 ms | 61.4 ms | 58.2 ms | 64.4 ms | 62.5 ms |
| pascal | 963.0 ms | 962.7 ms | 5.549 s | 27.8 ms | 28.2 ms | 34.4 ms | 70.6 ms | 50.4 ms | 64.2 ms | 48.1 ms |
| powmod | 687.1 ms | 679.4 ms | 4.332 s | 23.9 ms | 23.8 ms | 34.5 ms | 51.3 ms | 61.4 ms | 60.3 ms | 34.6 ms |
| primes | 238.5 ms | 229.8 ms | 1.473 s | 6.9 ms | 6.6 ms | 8.8 ms | 44.9 ms | 9.1 ms | 17.9 ms | 17.3 ms |
| tak | 471.4 ms | 468.8 ms | 2.567 s | 33.2 ms | 33.0 ms | 35.7 ms | 82.6 ms | 45.1 ms | 68.5 ms | 99.3 ms |
| textstats | 23.8 ms | 24.8 ms | 123.2 ms | 2.0 ms | 2.1 ms | 3.7 ms | 11.8 ms | 4.0 ms | 17.8 ms | 12.8 ms |
| wordfreq | 40.9 ms | 47.8 ms | 187.4 ms | 4.5 ms | 1.5 ms | 3.3 ms | 11.5 ms | 2.6 ms | 17.8 ms | 15.7 ms |
| Benchmark | Osprey | Osprey (ARC) | Osprey (GC) | Rust | C | C# (AOT) | Dart (AOT) | OCaml | Haskell | Osprey (wasm) | Rust (wasm) |
|---|---|---|---|---|---|---|---|---|---|---|---|
| ackermann | 1.382 s | 860.8 ms | 5.514 s | 129.3 ms | 130.6 ms | 132.4 ms | 185.3 ms | 111.3 ms | 65.3 ms | wrong✗ | 145.5 ms |
| binarytrees | 1.224 s | 1.156 s | 5.346 s | 743.8 ms | 362.9 ms | 128.4 ms | 128.6 ms | 52.3 ms | 17.0 ms | 1.165 s | 818.6 ms |
| coins | 660.2 ms | 416.7 ms | 2.582 s | 84.5 ms | 79.8 ms | 104.4 ms | 126.0 ms | 103.3 ms | 52.3 ms | 466.5 ms | 114.0 ms |
| collatz | 516.9 ms | 343.7 ms | 2.162 s | 13.4 ms | 10.8 ms | 59.3 ms | 72.7 ms | 64.6 ms | 40.2 ms | 380.3 ms | 25.4 ms |
| coprime | 189.7 ms | 148.4 ms | 703.3 ms | 66.4 ms | 65.0 ms | 80.5 ms | 111.6 ms | 119.4 ms | 220.3 ms | 296.5 ms | 163.3 ms |
| digitsum | 686.9 ms | 397.9 ms | 4.629 s | 6.1 ms | 6.1 ms | 21.2 ms | 32.8 ms | 19.5 ms | 29.4 ms | 280.0 ms | 18.8 ms |
| exprtree | 46.4 ms | 28.1 ms | 148.9 ms | 11.1 ms | 6.1 ms | 7.7 ms | 15.8 ms | 5.1 ms | 16.3 ms | 33.7 ms | 20.4 ms |
| factorial | 35.8 ms | 35.5 ms | 35.4 ms | 35.6 ms | 35.3 ms | 37.4 ms | 51.2 ms | 48.7 ms | 53.5 ms | 44.7 ms | 48.6 ms |
| fib | 1.097 s | 600.5 ms | 4.502 s | 22.7 ms | 23.4 ms | 43.3 ms | 59.8 ms | 29.5 ms | 56.5 ms | 684.9 ms | 49.4 ms |
| gcdsum | 133.9 ms | 120.1 ms | 241.2 ms | 86.1 ms | 86.5 ms | 92.8 ms | 122.0 ms | 107.7 ms | 115.0 ms | 126.5 ms | 104.3 ms |
| hanoi | 1.766 s | 979.3 ms | 5.488 s | 37.5 ms | 38.5 ms | 38.7 ms | 103.9 ms | 62.9 ms | 54.4 ms | 766.1 ms | 52.3 ms |
| isqrt | 563.8 ms | 414.3 ms | 3.009 s | 10.9 ms | 10.6 ms | 17.1 ms | 32.5 ms | 20.6 ms | 41.0 ms | 412.9 ms | 22.9 ms |
| josephus | 380.1 ms | 222.2 ms | 1.513 s | 33.8 ms | 33.4 ms | 35.9 ms | 42.0 ms | 42.0 ms | 44.5 ms | 243.7 ms | 44.4 ms |
| listops | 7.2 ms | 6.1 ms | 17.4 ms | 1.5 ms | 1.3 ms | 3.3 ms | 10.8 ms | 2.2 ms | 16.6 ms | 13.4 ms | 12.5 ms |
| mutual | 19.3 ms | 18.3 ms | 19.7 ms | 13.1 ms | 12.9 ms | 21.5 ms | 335.0 ms | 29.1 ms | 40.7 ms | 40.4 ms | 30.0 ms |
| nestedloop | 870.6 ms | 503.7 ms | 3.463 s | 46.4 ms | 46.0 ms | 48.4 ms | 60.6 ms | 58.5 ms | 65.2 ms | 381.6 ms | 62.9 ms |
| pascal | 1.602 s | 936.7 ms | 6.487 s | 27.9 ms | 28.2 ms | 34.1 ms | 65.2 ms | 45.1 ms | 65.0 ms | 970.5 ms | 46.9 ms |
| powmod | 883.9 ms | 498.5 ms | 4.019 s | 27.4 ms | 27.5 ms | 40.1 ms | 58.8 ms | 71.1 ms | 65.4 ms | 407.8 ms | 39.5 ms |
| primes | 316.4 ms | 171.6 ms | 1.257 s | 7.1 ms | 7.1 ms | 10.7 ms | 52.6 ms | 10.0 ms | 18.7 ms | 144.4 ms | 21.0 ms |
| tak | 598.0 ms | 363.7 ms | 2.673 s | 37.5 ms | 37.3 ms | 40.5 ms | 93.3 ms | 51.2 ms | 75.0 ms | 480.5 ms | 92.0 ms |
| textstats | 23.3 ms | 16.0 ms | 75.1 ms | 2.0 ms | 2.2 ms | 3.8 ms | 11.4 ms | 4.0 ms | 16.7 ms | 25.2 ms | 14.9 ms |
| wordfreq | 37.5 ms | 40.3 ms | 141.7 ms | 4.5 ms | 1.5 ms | 3.3 ms | 10.6 ms | 2.5 ms | 16.4 ms | 45.7 ms | 15.7 ms |
Peak memory
-| Benchmark | Osprey | Osprey (ARC) | Osprey (GC) | Rust | C | C# (AOT) | Dart (AOT) | OCaml | Haskell | Rust (wasm) |
|---|---|---|---|---|---|---|---|---|---|---|
| ackermann | 2056.0 MiB | 1.9 MiB | 19.0 MiB | 1.8 MiB | 1.6 MiB | 7.0 MiB | 14.0 MiB | 2.6 MiB | 15.1 MiB | — |
| binarytrees | 2410.8 MiB | 2.8 MiB | 18.2 MiB | 2.1 MiB | 1.7 MiB | 16.1 MiB | 22.5 MiB | 5.1 MiB | 11.0 MiB | — |
| coins | 1371.3 MiB | 1.5 MiB | 19.1 MiB | 1.5 MiB | 1.4 MiB | 6.8 MiB | 13.9 MiB | 2.2 MiB | 11.1 MiB | — |
| collatz | 1102.2 MiB | 1.5 MiB | 20.6 MiB | 1.5 MiB | 1.4 MiB | 6.8 MiB | 13.9 MiB | 2.2 MiB | 11.1 MiB | — |
| coprime | 992.1 MiB | 1.5 MiB | 18.6 MiB | 1.5 MiB | 1.4 MiB | 6.8 MiB | 13.9 MiB | 2.2 MiB | 11.1 MiB | — |
| digitsum | 1063.6 MiB | 1.5 MiB | 18.8 MiB | 1.5 MiB | 1.4 MiB | 6.8 MiB | 13.9 MiB | 2.2 MiB | 11.1 MiB | — |
| exprtree | 109.4 MiB | 3.4 MiB | 18.5 MiB | 2.6 MiB | 11.4 MiB | 15.2 MiB | 22.5 MiB | 6.0 MiB | 11.3 MiB | — |
| factorial | 614.2 MiB | 1.5 MiB | 19.6 MiB | 1.5 MiB | 1.4 MiB | 6.8 MiB | 13.8 MiB | 2.2 MiB | 11.1 MiB | — |
| fib | 1373.8 MiB | 1.5 MiB | 18.6 MiB | 1.5 MiB | 1.4 MiB | 6.8 MiB | 13.9 MiB | 2.2 MiB | 11.1 MiB | — |
| gcdsum | 870.0 MiB | 1.5 MiB | 18.8 MiB | 1.5 MiB | 1.4 MiB | 6.8 MiB | 13.8 MiB | 2.2 MiB | 11.1 MiB | — |
| hanoi | 3085.5 MiB | 1.5 MiB | 20.6 MiB | 1.5 MiB | 1.4 MiB | 6.8 MiB | 14.0 MiB | 2.2 MiB | 11.1 MiB | — |
| isqrt | 1198.5 MiB | 1.5 MiB | 19.1 MiB | 1.5 MiB | 1.4 MiB | 6.8 MiB | 13.9 MiB | 2.2 MiB | 11.1 MiB | — |
| josephus | 614.2 MiB | 1.5 MiB | 18.6 MiB | 1.5 MiB | 1.4 MiB | 6.8 MiB | 13.9 MiB | 2.2 MiB | 11.1 MiB | — |
| listops | 22.2 MiB | 2.0 MiB | 14.0 MiB | 1.6 MiB | 1.4 MiB | 7.0 MiB | 14.3 MiB | 2.5 MiB | 11.3 MiB | — |
| mutual | 1996.9 MiB | 1.5 MiB | 18.6 MiB | 1.5 MiB | 1.4 MiB | 6.8 MiB | 13.9 MiB | 2.2 MiB | 11.1 MiB | — |
| nestedloop | 2397.0 MiB | 1.5 MiB | 18.6 MiB | 1.5 MiB | 1.4 MiB | 6.8 MiB | 13.9 MiB | 2.2 MiB | 11.0 MiB | — |
| pascal | 2459.6 MiB | 1.5 MiB | 18.6 MiB | 1.5 MiB | 1.4 MiB | 6.8 MiB | 13.9 MiB | 2.2 MiB | 11.1 MiB | — |
| powmod | 1901.0 MiB | 1.5 MiB | 18.6 MiB | 1.5 MiB | 1.4 MiB | 6.8 MiB | 14.0 MiB | 2.2 MiB | 11.1 MiB | — |
| primes | 655.8 MiB | 1.5 MiB | 18.5 MiB | 1.5 MiB | 1.4 MiB | 6.8 MiB | 13.9 MiB | 2.2 MiB | 11.1 MiB | — |
| tak | 1162.1 MiB | 1.5 MiB | 18.8 MiB | 1.5 MiB | 1.4 MiB | 6.8 MiB | 13.9 MiB | 2.2 MiB | 11.1 MiB | — |
| textstats | 56.7 MiB | 1.5 MiB | 14.8 MiB | 1.6 MiB | 1.4 MiB | 6.8 MiB | 14.0 MiB | 2.3 MiB | 11.4 MiB | — |
| wordfreq | 102.0 MiB | 1.6 MiB | 18.1 MiB | 1.6 MiB | 1.4 MiB | 6.8 MiB | 14.0 MiB | 2.3 MiB | 11.3 MiB | — |
| Benchmark | Osprey | Osprey (ARC) | Osprey (GC) | Rust | C | C# (AOT) | Dart (AOT) | OCaml | Haskell | Osprey (wasm) | Rust (wasm) |
|---|---|---|---|---|---|---|---|---|---|---|---|
| ackermann | 2.0 MiB | 2.0 MiB | 21.0 MiB | 1.8 MiB | 1.7 MiB | 7.1 MiB | 14.0 MiB | 2.7 MiB | 15.1 MiB | wrong✗ | — |
| binarytrees | 1808.5 MiB | 2.9 MiB | 20.3 MiB | 2.2 MiB | 1.8 MiB | 16.1 MiB | 22.5 MiB | 5.2 MiB | 11.1 MiB | — | — |
| coins | 1.5 MiB | 1.5 MiB | 20.5 MiB | 1.6 MiB | 1.5 MiB | 6.8 MiB | 13.9 MiB | 2.3 MiB | 11.1 MiB | — | — |
| collatz | 221.8 MiB | 1.5 MiB | 18.5 MiB | 1.6 MiB | 1.4 MiB | 6.9 MiB | 14.0 MiB | 2.3 MiB | 11.1 MiB | — | — |
| coprime | 1.5 MiB | 1.5 MiB | 18.7 MiB | 1.6 MiB | 1.4 MiB | 6.8 MiB | 14.0 MiB | 2.3 MiB | 11.1 MiB | — | — |
| digitsum | 335.1 MiB | 1.5 MiB | 22.0 MiB | 1.6 MiB | 1.4 MiB | 6.9 MiB | 14.0 MiB | 2.3 MiB | 11.1 MiB | — | — |
| exprtree | 9.1 MiB | 3.4 MiB | 18.5 MiB | 2.7 MiB | 11.5 MiB | 15.2 MiB | 22.5 MiB | 6.1 MiB | 11.4 MiB | — | — |
| factorial | 1.5 MiB | 1.5 MiB | 1.5 MiB | 1.6 MiB | 1.4 MiB | 6.8 MiB | 13.9 MiB | 2.3 MiB | 11.1 MiB | — | — |
| fib | 1.5 MiB | 1.5 MiB | 22.4 MiB | 1.6 MiB | 1.4 MiB | 6.8 MiB | 13.9 MiB | 2.2 MiB | 11.2 MiB | — | — |
| gcdsum | 1.5 MiB | 1.5 MiB | 22.3 MiB | 1.6 MiB | 1.4 MiB | 6.9 MiB | 14.0 MiB | 2.3 MiB | 11.1 MiB | — | — |
| hanoi | 1.5 MiB | 1.5 MiB | 22.4 MiB | 1.6 MiB | 1.4 MiB | 6.8 MiB | 13.8 MiB | 2.3 MiB | 11.2 MiB | — | — |
| isqrt | 779.1 MiB | 1.5 MiB | 20.7 MiB | 1.6 MiB | 1.4 MiB | 6.8 MiB | 13.9 MiB | 2.3 MiB | 11.1 MiB | — | — |
| josephus | 1.5 MiB | 1.5 MiB | 18.6 MiB | 1.6 MiB | 1.4 MiB | 6.8 MiB | 13.8 MiB | 2.3 MiB | 11.1 MiB | — | — |
| listops | 14.4 MiB | 2.1 MiB | 12.9 MiB | 1.7 MiB | 1.5 MiB | 7.1 MiB | 14.3 MiB | 2.6 MiB | 11.4 MiB | — | — |
| mutual | 1.5 MiB | 1.5 MiB | 7.3 MiB | 1.6 MiB | 1.4 MiB | 6.9 MiB | 14.0 MiB | 2.3 MiB | 11.1 MiB | — | — |
| nestedloop | 1.5 MiB | 1.5 MiB | 20.2 MiB | 1.6 MiB | 1.4 MiB | 6.8 MiB | 13.9 MiB | 2.2 MiB | 11.1 MiB | — | — |
| pascal | 1.5 MiB | 1.5 MiB | 18.6 MiB | 1.6 MiB | 1.4 MiB | 6.9 MiB | 13.9 MiB | 2.2 MiB | 11.1 MiB | — | — |
| powmod | 1.5 MiB | 1.5 MiB | 20.7 MiB | 1.6 MiB | 1.4 MiB | 6.9 MiB | 14.0 MiB | 2.3 MiB | 11.1 MiB | — | — |
| primes | 1.5 MiB | 1.5 MiB | 19.6 MiB | 1.6 MiB | 1.4 MiB | 6.9 MiB | 14.0 MiB | 2.2 MiB | 11.1 MiB | — | — |
| tak | 1.5 MiB | 1.5 MiB | 20.5 MiB | 1.6 MiB | 1.4 MiB | 6.9 MiB | 13.9 MiB | 2.3 MiB | 11.2 MiB | — | — |
| textstats | 1.5 MiB | 1.6 MiB | 18.6 MiB | 1.6 MiB | 1.4 MiB | 6.8 MiB | 14.0 MiB | 2.3 MiB | 11.4 MiB | — | — |
| wordfreq | 59.1 MiB | 1.6 MiB | 18.0 MiB | 1.6 MiB | 1.4 MiB | 6.8 MiB | 14.0 MiB | 2.3 MiB | 11.4 MiB | — | — |