Skip to content

Performance

Performance

Sova vs Axum vs Actix-web on an identical multi-page fixture site (same HTML/JSON bodies, verified SHA-256).

Methodology

  • Stand: bench/stand/ — shared fixtures in fixtures/, three minimal servers (stand_sova, stand_axum, stand_actix).
  • Bodies must match byte-for-byte across frameworks before load runs (run.sh aborts on mismatch).
  • Load tool: oha.
  • This capture: duration 10s, concurrency 50, TOKIO_WORKER_THREADS=4.
  • Captured at 2026-08-08T09:42:22Z on Admins-MacBook-Pro.local.

Pages: /, /about, /blog, /blog/hello, /contact, /api/health.

Latest results — GET /

FrameworkReq/sp50 (ms)p99 (ms)
sova1016850.4151.725
axum1204760.4030.820
actix853510.5092.347

Latest results — mean across all paths

FrameworkMean Req/sMean p99 (ms)
sova1030941.705
axum1172161.006
actix921731.899

Per-path detail

FrameworkPathReq/sp50 (ms)p99 (ms)
sova/1016850.4151.725
axum/1204760.4030.820
actix/853510.5092.347
sova/about1127900.4111.181
axum/about1183320.4050.880
actix/about943070.5101.659
sova/blog1006450.4141.671
axum/blog1169680.4041.046
actix/blog915600.5042.260
sova/blog/hello1032880.4121.624
axum/blog/hello1172810.4080.944
actix/blog/hello947160.5121.631
sova/contact964060.4182.243
axum/contact1137580.4071.146
actix/contact937580.5181.593
sova/api/health1037480.4081.784
axum/api/health1164840.3981.198
actix/api/health933470.5071.902

Re-run / regression gate

bash
./bench/stand/run.sh
./bench/stand/run.sh --update-baseline   # after intentional perf changes
DURATION=15s CONCURRENCY=100 ./bench/stand/run.sh

Regression thresholds (vs bench/stand/results/baseline.json): home RPS drop > 15% or p99 rise > 40% fails the script.

Machine-sensitive: compare relative rankings and deltas, not absolute RPS across laptops.