rama
Flagship · Rust · engine: rama-http-core · standard configuration · completeness 4/4
Rama 0.4 on the multi-threaded Tokio runtime, default configuration. Routing and path/query/body extractors through the rama web Router, JSON via its Json response, compression through the rama CompressionLayer, static files through ServeDir, TLS via rustls and WebSocket via the rama-ws acceptor.
- Official repository
- Official website
- Benchmark implementation
- All Rust entries, compared
- Open the leaderboard
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 | 32 of 84 | 3174 |
| HTTP/2 | 27 of 30 | 163 |
| WebSocket | 27 of 29 | 338 |
Every result
Alpha Round, 29 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 | 763,649 | 1.51ms | 4.91ms | 6308.5% | 98MiB |
| Connection | Pipelined | 4,096 | 4,763,892 | 6.95ms | 37.90ms | 6270.2% | 138MiB |
| Connection | Short-lived | 4,096 | 497,982 | 488us | 2.21ms | 2320.5% | 71MiB |
| Concurrency | Async Delay | 32,000 | 324,741 | 22.47ms | 49.60ms | 3955.3% | 392MiB |
| Efficiency | Latency-10K | 1,024 | 9,900 | 74.3us | 111.0us | 25.2% | 65MiB |
| Efficiency | Latency-1M | 1,024 | 659,596 | 3170207.5us | 6518784.0us | 6248.4% | 74MiB |
| Efficiency | Latency-500K/8 | 1,024 | 320,482 | 3366189.1us | 6883328.0us | 782.8% | 41MiB |
| Workload | JSON Comp | 4,096 | 233,394 | 3.04ms | 7.59ms | 6109.2% | 149MiB |
| Workload | JSON Comp | 16,384 | 223,049 | 2.45ms | 8.04ms | 5655.1% | 163MiB |
| Workload | JSON TLS | 4,096 | 620,520 | 4.62ms | 59.12ms | 5933.0% | 330MiB |
| Workload | 8Gbit | 512 | 49,046 | 111.2us | 159.0us | 298.6% | 115MiB |
| Workload | Static TLS | 1,024 | 21,473 | 34.39ms | 332.03ms | 3658.5% | 226MiB |
| HTTP/2 | Baseline | 256 | 327,519 | 74.93ms | 289.17ms | 1933.9% | 352MiB |
| HTTP/2 | Baseline | 1,024 | 281,193 | 259.46ms | 1.04s | 1899.6% | 1019MiB |
| HTTP/2 | Static | 256 | 16,598 | 469.90ms | 1.25s | 3959.8% | 672MiB |
| HTTP/2 | Static | 1,024 | 14,935 | 1.50s | 3.56s | 3672.0% | 1.4GiB |
| HTTP/2 | Baseline (h2c) | 256 | 333,263 | 71.28ms | 280.02ms | 1945.7% | 351MiB |
| HTTP/2 | Baseline (h2c) | 1,024 | 275,386 | 241.19ms | 1.00s | 1875.4% | 991MiB |
| HTTP/2 | Baseline (h2c) | 4,096 | 285,844 | 455.64ms | 2.05s | 1873.9% | 2.2GiB |
| HTTP/2 | JSON (h2c) | 1,024 | 230,264 | 116.88ms | 817.99ms | 2428.5% | 472MiB |
| HTTP/2 | JSON (h2c) | 4,096 | 173,201 | 309.06ms | 3.07s | 1923.6% | 901MiB |
| WebSocket | Echo | 512 | 433,355 | 1.10ms | 2.50ms | 3104.0% | 108MiB |
| WebSocket | Echo | 4,096 | 351,636 | 3.89ms | 10.80ms | 3660.2% | 403MiB |
| WebSocket | Echo | 16,384 | 348,102 | 8.71ms | 15.80ms | 3866.9% | 604MiB |
| WebSocket | Echo Pipelined | 512 | 8,480,789 | 917us | 2.30ms | 3658.5% | 131MiB |
| WebSocket | Echo Pipelined | 4,096 | 7,503,769 | 2.15ms | 5.32ms | 3801.1% | 302MiB |
| WebSocket | Echo Pipelined | 16,384 | 5,970,239 | 18.11ms | 28.10ms | 4610.8% | 1.1GiB |
| WebSocket | Echo Short-lived | 512 | 258,293 | 678us | 1.64ms | 2458.1% | 148MiB |
| WebSocket | Echo Short-lived | 4,096 | 264,460 | 678us | 1.67ms | 2483.6% | 152MiB |
Compared with
The Rust entries around rama on the HTTP/1.1 composite, and the one leading them. The last column shows every profile side by side.
| Entry | Composite | vs rama | |
|---|---|---|---|
| cpeak | 7354 | +132% | head to head |
| tokio-uring | 3416 | +8% | head to head |
| hyper | 3297 | +4% | head to head |
| rocket | 2859 | -10% | head to head |
| salvo | 2360 | -26% | head to head |
Compare rama with any Rust entry · Compare rama with any entry, in any language · Every Rust entry, ranked
Results updated · How the benchmark is run · The machine · Add or fix an entry