trillium
Emerging · Rust · engine: trillium-http · standard configuration
Trillium 1.x async Rust web framework on tokio. trillium-rustls for TLS (h1 + h2 via ALPN), trillium-quinn for HTTP/3, trillium-websockets for /ws, trillium-static for /static/* served from disk per request, trillium-compression middleware for runtime gzip/brotli, trillium-api for JSON handlers, trillium-grpc for the benchmark.BenchmarkService gRPC endpoints, deadpool-postgres for async-db and crud.
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 | 6 of 71 | 601 |
| HTTP/2 | 13 of 16 | 30 |
| HTTP/3 | 5 of 6 | 18 |
| Gateway | 3 of 4 | 126 |
| gRPC | 4 of 5 | 92 |
| WebSocket | 18 of 20 | 17 |
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 | 607,122 | 790us | 1.85ms | 5777.3% | 134MiB |
| Connection | Baseline | 4,096 | 663,079 | 2.83ms | 9.20ms | 6113.0% | 200MiB |
| Connection | Pipelined | 512 | 2,582,259 | 2.91ms | 34.70ms | 6688.1% | 125MiB |
| Connection | Pipelined | 4,096 | 2,756,991 | 12.67ms | 100.90ms | 6464.1% | 234MiB |
| Connection | Short-lived | 512 | 502,168 | 413us | 1.84ms | 2356.9% | 216MiB |
| Connection | Short-lived | 4,096 | 483,480 | 1.19ms | 2.25ms | 2341.3% | 224MiB |
| Workload | JSON | 4,096 | 536,234 | 1.22ms | 3.63ms | 4748.6% | 299MiB |
| Workload | JSON Comp | 512 | 118,558 | 3.92ms | 9.04ms | 6124.8% | 747MiB |
| Workload | JSON Comp | 4,096 | 119,814 | 7.30ms | 26.80ms | 6162.4% | 773MiB |
| Workload | JSON Comp | 16,384 | 112,729 | 10.42ms | 34.50ms | 6019.9% | 755MiB |
| Workload | JSON TLS | 4,096 | 612,426 | 5.83ms | 33.35ms | 6322.8% | 414MiB |
| Workload | Upload | 32 | 2,647 | 12.06ms | 36.90ms | 2016.3% | 109MiB |
| Workload | Upload | 256 | 3,053 | 77.77ms | 299.30ms | 3081.2% | 204MiB |
| Workload | Static | 1,024 | 20,564 | 46.03ms | 589.10ms | 2784.4% | 492MiB |
| Workload | Static | 4,096 | 23,750 | 122.65ms | 2.00s | 3809.4% | 453MiB |
| Workload | Static | 6,800 | 19,884 | 135.99ms | 2.00s | 1855.6% | 637MiB |
| Workload | Static TLS | 1,024 | 25,319 | 34.06ms | 219.63ms | 3095.0% | 366MiB |
| Workload | Static TLS | 4,096 | 22,942 | 100.77ms | 568.72ms | 4244.9% | 497MiB |
| Workload | Static TLS | 6,800 | 19,470 | 157.95ms | 746.69ms | 2442.6% | 722MiB |
| Database | Async DB | 1,024 | 215,245 | 3.66ms | 5.76ms | 3190.0% | 269MiB |
| Database | CRUD | 4,096 | 464,645 | 6.00ms | 11.30ms | 4267.0% | 343MiB |
| Database | Fortunes | 1,024 | 219,679 | 3.34ms | 5.38ms | 5315.3% | 302MiB |
| Multi-endpoint | API-4 | 256 | 55,590 | 4.00ms | 10.20ms | 399.2% | 68MiB |
| Multi-endpoint | API-16 | 1,024 | 183,782 | 1.51ms | 4.09ms | 1508.5% | 141MiB |
| HTTP/2 | Baseline | 256 | 1,309,107 | 19.05ms | 103.29ms | 5766.8% | 1.7GiB |
| HTTP/2 | Baseline | 1,024 | 1,250,296 | 64.77ms | 468.94ms | 5826.0% | 6.6GiB |
| HTTP/2 | Static | 256 | 20,963 | 354.75ms | 1.17s | 3940.3% | 1.2GiB |
| HTTP/2 | Static | 1,024 | 18,596 | 1.05s | 3.05s | 3934.9% | 2.2GiB |
| HTTP/3 | Baseline | 64 | 448,897 | 6.78ms | 63.40ms | 2440.7% | 233MiB |
| HTTP/3 | Static | 64 | 18,600 | 61.00ms | 307.65ms | 3715.2% | 645MiB |
| gRPC | Unary | 256 | 812,492 | 31.55ms | 272.83ms | 6211.7% | 577MiB |
| gRPC | Unary | 1,024 | 766,223 | 80.35ms | 711.68ms | 6154.9% | 1.9GiB |
| gRPC | Unary TLS | 256 | 825,701 | 30.93ms | 97.91ms | 6199.3% | 879MiB |
| gRPC | Unary TLS | 1,024 | 696,752 | 97.50ms | 843.86ms | 6145.3% | 2.0GiB |
| gRPC | Stream | 64 | 2,215,000 | 516.68ms | 754.26ms | 6179.1% | 642MiB |
| gRPC | Stream TLS | 64 | 2,256,000 | 507.77ms | 662.44ms | 6167.0% | 598MiB |
| Gateway | Gateway (H2) | 512 | 84,883 | 180.12ms | 2.26s | 5005.5% | 2.8GiB |
| Gateway | Gateway (H2) | 1,024 | 79,440 | 350.72ms | 4.46s | 5421.1% | 5.2GiB |
| Gateway | Gateway (H3) | 64 | 83,650 | 24.32ms | 89.21ms | 3996.9% | 944MiB |
| Gateway | Gateway (H3) | 256 | 62,121 | 127.74ms | 783.03ms | 2828.2% | 2.3GiB |
| WebSocket | Echo | 512 | 443,216 | 1.08ms | 2.47ms | 3275.4% | 341MiB |
| WebSocket | Echo | 4,096 | 354,094 | 4.29ms | 11.60ms | 4187.7% | 667MiB |
| WebSocket | Echo | 16,384 | 348,539 | 9.88ms | 18.80ms | 4061.9% | 1.2GiB |
| WebSocket | Echo Pipelined | 512 | 4,612,210 | 1.70ms | 4.34ms | 6059.1% | 330MiB |
| WebSocket | Echo Pipelined | 4,096 | 4,972,287 | 5.02ms | 19.80ms | 6465.3% | 623MiB |
| WebSocket | Echo Pipelined | 16,384 | 4,810,009 | 12.33ms | 50.00ms | 6588.6% | 1.2GiB |
How the benchmark is run · The machine · Add or fix an entry