roadrunner
Emerging · Erlang · standard configuration · completeness 4/4
Roadrunner: pure-Erlang HTTP/1.1 + HTTP/2 + HTTP/3 + WebSocket server from the Arizona framework.
Composite rank
Each profile of a family is worth 100 to the entry that leads it, and the composite is the sum over the family, less 2.5% for each of routing, middleware, request and response the entry does not do for you - its completeness factor, which the WebSocket and gRPC families do not carry. The field is this entry's own league: engines and reverse proxies are scored apart from frameworks. How it works.
| Family | Rank | Composite |
|---|---|---|
| HTTP/1.1 | 33 of 71 | 2322 |
| HTTP/2 | 13 of 18 | 278 |
| HTTP/3 | 7 of 7 | 83 |
| WebSocket | 9 of 15 | 647 |
Every result
Alpha Round, 33 runs. Requests per second is the best of three; latency, CPU and memory come from that run.
| Category | Profile | Conns | Req/sec | Avg | p99 | CPU | Memory |
|---|---|---|---|---|---|---|---|
| Connection | Baseline | 4,096 | 976,151 | 3.83ms | 7.15ms | 6350.3% | 326MiB |
| Connection | Pipelined | 4,096 | 4,292,643 | 14.38ms | 758.90ms | 6355.2% | 356MiB |
| Connection | Short-lived | 4,096 | 434,132 | 9.38ms | 97.70ms | 5645.6% | 319MiB |
| Concurrency | Async Delay | 32,000 | 949,970 | 17.29ms | 19.00ms | 5421.5% | 663MiB |
| Efficiency | Latency-10K | 1,024 | 9,981 | 101.6us | 155.0us | 145.0% | 196MiB |
| Efficiency | Latency-1M | 1,024 | 960,501 | 435626.6us | 1760768.0us | 6579.0% | 309MiB |
| Efficiency | Latency-500K/8 | 1,024 | 146,750 | 7038493.9us | 13996032.0us | 733.3% | 153MiB |
| Workload | JSON Comp | 4,096 | 108,682 | 35.60ms | 799.60ms | 6356.6% | 938MiB |
| Workload | JSON Comp | 16,384 | 112,766 | 95.79ms | 3.44s | 6028.4% | 892MiB |
| Workload | JSON TLS | 4,096 | 165,591 | 8.68ms | 65.21ms | 6196.0% | 1.1GiB |
| Workload | 8Gbit | 512 | 48,823 | 263.3us | 4482.0us | 1702.6% | 533MiB |
| Workload | Static TLS | 1,024 | 86,064 | 11.50ms | 68.87ms | 5805.8% | 645MiB |
| Database | Async DB | 1,024 | 118,236 | 8.24ms | 33.00ms | 6401.2% | 822MiB |
| Database | Fortunes | 1,024 | 63,787 | 15.46ms | 40.70ms | 6242.3% | 1.1GiB |
| HTTP/2 | Baseline | 256 | 450,329 | 8.88ms | 49.77ms | 6476.7% | 338MiB |
| HTTP/2 | Baseline | 1,024 | 459,409 | 28.31ms | 274.05ms | 6433.4% | 420MiB |
| HTTP/2 | Static | 256 | 89,595 | 45.17ms | 82.90ms | 5802.1% | 446MiB |
| HTTP/2 | Static | 1,024 | 79,120 | 193.39ms | 361.18ms | 5949.6% | 917MiB |
| HTTP/2 | Baseline (h2c) | 256 | 741,829 | 1.37ms | 47.82ms | 6625.7% | 256MiB |
| HTTP/2 | Baseline (h2c) | 1,024 | 733,355 | 5.52ms | 179.96ms | 6591.1% | 293MiB |
| HTTP/2 | Baseline (h2c) | 4,096 | 633,403 | 25.60ms | 1.64s | 6382.6% | 467MiB |
| HTTP/2 | JSON (h2c) | 1,024 | 98,625 | 40.76ms | 957.21ms | 4138.2% | 933MiB |
| HTTP/2 | JSON (h2c) | 4,096 | 97,645 | 105.55ms | 5.00s | 4445.9% | 1.7GiB |
| HTTP/3 | Baseline | 64 | 125,317 | 32.13ms | 39.56ms | 5212.4% | 447MiB |
| HTTP/3 | Static | 64 | 13,422 | 301.06ms | 435.79ms | 5329.2% | 678MiB |
| WebSocket | Echo | 512 | 442,000 | 1.16ms | 4.23ms | 5093.4% | 247MiB |
| WebSocket | Echo | 4,096 | 1,574,332 | 2.43ms | 3.24ms | 6484.3% | 275MiB |
| WebSocket | Echo | 16,384 | 1,439,551 | 4.36ms | 8.29ms | 6247.0% | 584MiB |
| WebSocket | Echo Pipelined | 512 | 9,586,771 | 853us | 1.27ms | 6381.3% | 253MiB |
| WebSocket | Echo Pipelined | 4,096 | 9,304,716 | 6.70ms | 7.90ms | 6521.9% | 385MiB |
| WebSocket | Echo Pipelined | 16,384 | 9,312,931 | 7.69ms | 11.20ms | 6152.5% | 424MiB |
| WebSocket | Echo Short-lived | 512 | 338,376 | 281us | 1.32ms | 5232.0% | 355MiB |
| WebSocket | Echo Short-lived | 4,096 | 343,145 | 294us | 1.36ms | 5006.2% | 361MiB |
Compare roadrunner with any entry, in any language · Every Erlang entry, ranked
Results updated · How the benchmark is run · The machine · Add or fix an entry