Benchmarks

Workload: the todos REST API (HTTP + SQLite) — examples/todos-http-sqlite.tsm — with the identical API implemented for Node.js, Bun and Go. Load generated with wrk on loopback on a Vultr vc2-1c-1gb instance (1 vCPU Xeon Cascadelake, Ubuntu 24.04). Marina v0.2.0 evented build, AOT binary 2.5 MB. Benchmarked 2026-10-19.

Per runtime: fresh SQLite DB (10 seeded rows) → 10 s warmup → 30 s wrk -t4 -c64 GET → 20 s wrk -t4 -c64 POST. RSS sampled every 50–100 ms.

GET req/s · higher is better

wrk -t4 -c64 · 30 seconds — bars scaled to the fastest runtime

Marina 0.2 (evented)
11,102 req/s
Bun 1.4.3
19,903 req/s
Go 1.23
10,566 req/s
Node.js 22.23
10,163 req/s

Total requests in 30 s — Marina: 333,580, Bun: 597,567, Go: 317,317, Node: 305,387

POST req/s · higher is better

wrk -t4 -c64 · 20 seconds — each request inserts a row into SQLite, with JSON body validation

Marina 0.2 (evented)
1,400 req/s
Bun 1.4.3
964 req/s
Go 1.23
3,015 req/s
Node.js 22.23
922 req/s

resident set lower is better

Idle RSS at startup and peak RSS under the c=64 load — bars scaled to the heaviest runtime

Marina 0.2 (evented)
7.1 MB peak · 4.2 MB idle
Go 1.23
20 MB peak · 11.8 MB idle
Bun 1.4.3
40.7 MB peak · 23.1 MB idle
Node.js 22.23
84.5 MB peak · 60.2 MB idle

Latency (GET, c=64)

p50 / p99 in milliseconds — Marina's p99 beats both Go and Node.js

Runtime p50 p99
Marina 0.2 (evented) 5.71 ms 10.02 ms
Bun 1.4.3 3.03 ms 6.72 ms
Go 1.23 7.22 ms 55.27 ms
Node.js 22.23 5.82 ms 15.19 ms

concurrency sweep flat, no collapse

GET /todos — 5 s per point, req/s at each connection level

c=2
10,999 req/s
c=4
11,827 req/s
c=8
12,193 req/s
c=16
13,086 req/s
c=32
12,990 req/s
c=64
12,469 req/s

Takeaways

Bun wins raw GET throughput (~19.9k req/s), but the evented Marina build sits in the same league as Go and Node — 11.1k req/s at c=64 with a tighter p99 than both, and 1,400 POST req/s (write + validation), beating Bun and Node on writes.

The headline is memory: Marina's AOT binary idles at 4.2 MB and peaks at 7.1 MB — a third of Go's peak, and roughly 12× lighter than Node.js.