sark
Engine · Rust · engine: io_uring
sark — Rust HTTP on the dope io_uring runtime: thread-per-core, zero-copy parsing, type-safe routing, cartel-pg for Postgres. No serde, no tokio, no Arc/atomic.
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. 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 | 2 of 34 | 381 |
| HTTP/2 | 2 of 6 | 230 |
| gRPC | 3 of 3 | 294 |
| WebSocket | 4 of 9 | 191 |
Every result
Alpha Round, 46 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 | 512 | 3,986,715 | 127us | 280us | 6335.9% | 1.1GiB |
| Connection | Baseline | 4,096 | 4,199,582 | 975us | 1.29ms | 6227.0% | 1.2GiB |
| Connection | Pipelined | 512 | 40,074,710 | 203us | 397us | 6723.3% | 1.1GiB |
| Connection | Pipelined | 4,096 | 40,880,271 | 1.60ms | 2.26ms | 6757.4% | 1.2GiB |
| Connection | Short-lived | 512 | 2,443,440 | 195us | 695us | 5996.1% | 1.3GiB |
| Connection | Short-lived | 4,096 | 2,681,484 | 1.40ms | 3.56ms | 6238.1% | 1.3GiB |
| Workload | JSON | 4,096 | 1,811,202 | 1.68ms | 48.70ms | 6609.5% | 1.3GiB |
| Workload | JSON Comp | 512 | 605,170 | 833us | 2.61ms | 6105.9% | 1.3GiB |
| Workload | JSON Comp | 4,096 | 659,614 | 6.12ms | 161.40ms | 6508.4% | 1.3GiB |
| Workload | JSON Comp | 16,384 | 664,500 | 23.30ms | 579.40ms | 6437.0% | 1.3GiB |
| Workload | JSON TLS | 4,096 | 1,826,163 | 1.30ms | 48.07ms | 5916.6% | 1.3GiB |
| Workload | Upload | 32 | 2,728 | 2.25ms | 9.74ms | 1964.5% | 1.1GiB |
| Workload | Upload | 256 | 2,666 | 28.19ms | 116.80ms | 5446.5% | 1.2GiB |
| Workload | Static | 1,024 | 1,360,501 | 703.64us | 14.79ms | 6454.6% | 2.4GiB |
| Workload | Static | 4,096 | 1,294,519 | 3.04ms | 14.38ms | 6415.6% | 2.5GiB |
| Workload | Static | 6,800 | 1,216,867 | 5.42ms | 49.48ms | 6294.9% | 2.6GiB |
| Database | Async DB | 1,024 | 346,276 | 2.39ms | 26.20ms | 3522.6% | 1.4GiB |
| Database | CRUD | 4,096 | 548,026 | 6.64ms | 17.60ms | 1523.9% | 1.3GiB |
| Database | Fortunes | 1,024 | 246,536 | 2.45ms | 5.79ms | 5910.7% | 1.2GiB |
| Multi-endpoint | API-4 | 256 | 67,558 | 2.05ms | 27.50ms | 349.4% | 182MiB |
| Multi-endpoint | API-16 | 1,024 | 255,698 | 1.91ms | 32.60ms | 1599.2% | 398MiB |
| HTTP/2 | Baseline | 256 | 10,355,873 | 1.84ms | 5.82ms | 5585.1% | 1.1GiB |
| HTTP/2 | Baseline | 1,024 | 10,509,503 | 4.95ms | 36.63ms | 5919.4% | 1.3GiB |
| HTTP/2 | Static | 256 | 769,518 | 6.94ms | 34.84ms | 6327.1% | 1.5GiB |
| HTTP/2 | Static | 1,024 | 817,307 | 8.39ms | 77.80ms | 5575.1% | 2.0GiB |
| HTTP/2 | Baseline (h2c) | 256 | 11,825,268 | 1.89ms | 8.79ms | 5936.0% | 1.1GiB |
| HTTP/2 | Baseline (h2c) | 1,024 | 12,533,900 | 7.17ms | 25.96ms | 6444.9% | 1.1GiB |
| HTTP/2 | Baseline (h2c) | 4,096 | 12,340,650 | 30.28ms | 107.94ms | 6308.1% | 1.3GiB |
| HTTP/2 | JSON (h2c) | 1,024 | 3,243,287 | 9.63ms | 76.18ms | 6556.1% | 1.3GiB |
| HTTP/2 | JSON (h2c) | 4,096 | 1,975,371 | 64.10ms | 432.37ms | 6514.2% | 1.9GiB |
| gRPC | Unary | 256 | 370,563 | 41.79ms | 1.58s | 250.5% | 1.1GiB |
| gRPC | Unary | 1,024 | 1,473,467 | 16.87ms | 75.94ms | 1093.3% | 1.2GiB |
| gRPC | Unary TLS | 256 | 5,738,290 | 4.03ms | 27.49ms | 5897.6% | 1.1GiB |
| gRPC | Unary TLS | 1,024 | 5,794,812 | 11.28ms | 63.38ms | 6295.2% | 1.3GiB |
| gRPC | Stream | 64 | 9,917,000 | 125.47ms | 441.92ms | 91.2% | 1.1GiB |
| gRPC | Stream TLS | 64 | 9,547,000 | 127.42ms | 428.95ms | 91.6% | 1.1GiB |
| Gateway | Gateway (H2) | 512 | 107,499 | 142.24ms | 2.23s | 4529.5% | 2.8GiB |
| Gateway | Gateway (H2) | 1,024 | 73,267 | 353.29ms | 4.65s | 4305.8% | 4.9GiB |
| Gateway | Gateway (H3) | 64 | 93,655 | 21.75ms | 82.76ms | 3197.3% | 907MiB |
| Gateway | Gateway (H3) | 256 | 63,434 | 125.55ms | 733.02ms | 2079.4% | 2.2GiB |
| WebSocket | Echo | 512 | 4,179,366 | 121us | 258us | 6316.3% | 1.1GiB |
| WebSocket | Echo | 4,096 | 4,394,447 | 931us | 1.29ms | 6257.3% | 1.2GiB |
| WebSocket | Echo | 16,384 | 4,079,554 | 3.98ms | 4.74ms | 6377.9% | 1.6GiB |
| WebSocket | Echo Pipelined | 512 | 63,019,270 | 129us | 276us | 6366.9% | 1.1GiB |
| WebSocket | Echo Pipelined | 4,096 | 64,629,072 | 1.01ms | 1.32ms | 6254.4% | 1.2GiB |
| WebSocket | Echo Pipelined | 16,384 | 60,951,628 | 4.26ms | 4.92ms | 6385.8% | 1.6GiB |
How the benchmark is run · The machine · Add or fix an entry