@swarmmachina/swm-uws 0.7.2 / raw HTTP
swm-uws measurements
An isolated raw HTTP run of the native binding against pinned uWebSockets.js with the same server, handler, and host.
+5.81% throughput against the pinned upstream
- 100
- connections
- 10
- pipelining
- 6 × 5s
- round
- p95 3.782 ms
- swm-uws
- p99 4.344 ms
- swm-uws
- regression gate passed
All 6 pairs. No cherry-picking.
AB/BA ordering alternated so warm-up and host drift could not consistently favor one side. swm-uws led throughput in 4 of 6 pairs.
- 01
- swm-uws
- 433,346 req/s
- upstream uWS
- 436,476 req/s
- delta
- -0.72%
- p99
- 4.565 / 4.656 ms
- 02
- swm-uws
- 411,926 req/s
- upstream uWS
- 453,706 req/s
- delta
- -9.21%
- p99
- 4.749 / 4.387 ms
- 03
- swm-uws
- 487,614 req/s
- upstream uWS
- 452,755 req/s
- delta
- +7.70%
- p99
- 4.387 / 4.475 ms
- 04
- swm-uws
- 470,326 req/s
- upstream uWS
- 441,473 req/s
- delta
- +6.54%
- p99
- 4.301 / 4.565 ms
- 05
- swm-uws
- 476,814 req/s
- upstream uWS
- 401,785 req/s
- delta
- +18.67%
- p99
- 4.301 / 4.941 ms
- 06
- swm-uws
- 477,410 req/s
- upstream uWS
- 454,353 req/s
- delta
- +5.07%
- p99
- 4.301 / 4.475 ms
Throughput, tails, and runtime
Throughput is read alongside p95, p99, ELU, and memory. Lower tail latency and memory matter as much as the final rate.
| Metric | swm-uws | upstream uWS | delta | Direction |
|---|---|---|---|---|
| Throughput | 473,570 req/s | 447,114 req/s | +5.81% | higher is better |
| p95 latency | 3.782 ms | 4.013 ms | -5.77% | lower is better |
| p99 latency | 4.344 ms | 4.520 ms | -3.88% | lower is better |
| Server ELU | 96.64% | 96.70% | -0.07% | context |
| RSS after warm-up | 58.94 MiB | 59.65 MiB | -1.20% | lower is better |
| Heap used after warm-up | 5.22 MiB | 6.07 MiB | -14.00% | lower is better |
Tail conclusion: swm-uws median p95 was 3.782 ms and p99 was 4.344 ms. The pinned upstream measured 4.013 ms and 4.520 ms respectively. There were no request errors.
CPU counters per response
An independent perf stat run repeated the load profile and normalized hardware counters per HTTP response.
463,062req/s
p99 4.475ms
- 5,851.51
- cycles · per request
- 9,427.79
- instructions · per request
- 2,072.49
- branches · per request
- 8.670
- branch misses · per request
- 72.70
- cache references · per request
- 0.056
- cache misses · per request
swm-core 5.1.0 binding check
A separate balanced run measures the binding inside the real server layer. HTTP and WebSocket were each measured four times with the same swm-uws and upstream versions.
| Scenario | Runs | swm-uws | upstream uWS | p95 / p99 | ELU / RSS |
|---|---|---|---|---|---|
| HTTP GET /base-sync | 4 × 6s | 219,044 req/s +3.44% | 211,768 req/s | 4.656 / 8.862 ms | 98.72% / 80.42 MiB |
| WebSocket echo · 64 B | 4 × 6s | 104,033 msg/s +1.04% | 102,967 msg/s | 0.857 / 0.900 ms | 97.98% / 67.17 MiB |
How to reproduce it
The primary release result ran on Linux x64 with 100 connections, pipelining 10, a 2-second warm-up, a 5-second measurement, 6 balanced pairs, and 4 client workers.
Release Linux benchmark command
npm run build:native:pgo
SWM_BENCH_REFERENCE=/path/to/uwebsockets.js/ESM_wrapper.mjs \
npm run bench:compare:pgo:linux -- benchmark/profiles/pgo-balanced-linux- Environment
- Node.js 22.23.1 · Linux 6.17.0-40-generic x64 · Intel Xeon CPU E5-2680 v4
- Build
- Clang 18 · PGO balanced · LTO · generic x86-64