Benchmarks
Measured runtime and product workloads. Each table identifies its binaries, source, measurement method and execution host.
Source: CI run of the aphrody-perf workflow (artifacts perf-report-*).
linux-x64
Bun OS 1.4.6 (fd9d7a224) compared with upstream 1.4.3 (c6da4a4d3) on linux 6.17.0-1022-azure x64, AMD EPYC 7763 64-Core Processor x4, 16 GiB; 40 runs, 5 warmup, engine hyperfine, measured 2026-10-18T14:43:39.721Z. Median (p95); ratio = Bun OS / upstream, lower is faster for times. These measurements apply to the recorded executables and workload.
| Measure | Upstream | Bun OS | Ratio | Gate |
|---|---|---|---|---|
bun --version | 1.41 ms (p95 2.42 ms) | 1.52 ms (p95 2.19 ms) | 1.078 | ok |
bun -e '' | 1.35 ms (p95 1.95 ms) | 1.52 ms (p95 2.80 ms) | 1.125 | ok |
bun run (empty script) | 3.40 ms (p95 4.41 ms) | 4.14 ms (p95 5.39 ms) | 1.218 | ok |
bun test (one empty test) | 4.10 ms (p95 5.25 ms) | 5.33 ms (p95 6.21 ms) | 1.301 | ok |
bun build (small project) | 4.81 ms (p95 6.58 ms) | 5.07 ms (p95 6.04 ms) | 1.055 | ok |
bun install offline (warm cache) | 4.02 ms (p95 4.68 ms) | 4.36 ms (p95 6.10 ms) | 1.085 | ok |
| RSS at startup | 13.3 MiB (p95 18.3 MiB) | 29.1 MiB (p95 34.7 MiB) | 2.185 | info |
| RSS after loading node:* modules | 27.4 MiB (p95 27.9 MiB) | 43.9 MiB (p95 46.6 MiB) | 1.606 | info |
require of node:* modules | 37.5 ms (p95 42.8 ms) | 35.5 ms (p95 36.9 ms) | 0.947 | ok |
import() of node:* modules | 37.5 ms (p95 43.4 ms) | 36.1 ms (p95 37.2 ms) | 0.963 | ok |
require of bun:* modules | 1.22 ms (p95 1.64 ms) | 1.52 ms (p95 1.83 ms) | 1.253 | ok |
Bun.serve hello + first request | 1.63 ms (p95 1.83 ms) | 1.74 ms (p95 2.42 ms) | 1.067 | ok |
local fetch latency (p50) | 0.11 ms (p95 0.13 ms) | 0.12 ms (p95 0.13 ms) | 1.040 | ok |
local fetch latency (p99) | 0.20 ms (p95 0.26 ms) | 0.16 ms (p95 0.18 ms) | 0.789 | info |
local fetch, sequential throughput | 8,463 req/s (p95 9,065 req/s) | 8,367 req/s (p95 9,902 req/s) | 1.011 | info |
require of additional Bun OS modules | n/a | 3.99 ms (p95 4.27 ms) | info | |
| Binary size | 84.9 MiB | 184.9 MiB | 2.179 | ok |
Run note: Release upstream bun-v1.4.6 absente : repli sur bun-v1.4.3. Versions de base différentes (fork 1.4.6, upstream 1.4.3) : l'écart inclut le travail amont entre les deux; taille et RSS ne bloquent pas (--strict pour les imposer).
What is measured
bun --versionbun -e ''bun run(empty script)bun test(one empty test)bun build(small project)bun installoffline (warm cache)- RSS at startup
- RSS after loading node:* modules
requireof node:* modulesimport()of node:* modulesrequireof bun:* modulesBun.servehello + first request- local
fetchlatency (p50) - local
fetchlatency (p99) - local
fetch, sequential throughput requireof additional Bun OS modules- Binary size
Thresholds live in bench/aphrody/thresholds.json: a case fails when the runtime median exceeds upstream by more than its ratio and its absolute delta.
Run it yourself
git clone https://github.com/aphrody-labs/bun && cd bun
# runtime binary against the upstream release of the same base version
bun scripts/aphrody/perf-gate.ts --fork ~/.bun/bin/bun --upstream-version 1.4.5 --runs 40 --out tmp/perf
The report is written to tmp/perf/perf-report.md and perf-report.json. The upstream micro-benchmarks of bench/ run with cd bench && bun install && bun run <name>.