flare
Emerging · Mojo · standard configuration · completeness 4/4
Mojo networking library: HTTP/1.1, HTTP/2, HTTP/3, WebSocket and gRPC on a thread-per-core reactor, with sans-I/O protocol codecs mirrored by Lean 4 models.
Achievements
🥇 2 Gold · 🥈 5 Silver · 🥉 5 Bronze. Top three of a field, taken in this entry's own league: the family composite, the same composite among entries written in the same language, and each test profile it is scored on. Every field is the one the badges publish, so a medal and a badge always say the same thing. How medals are awarded.
| Medal | Award | Field | Rank |
|---|---|---|---|
| 🥇 Gold | Test profile | HTTP/3 · Baseline | 1 of 15 |
| 🥇 Gold | Test profile | Workload · JSON Comp | 1 of 78 |
| 🥈 Silver | Family composite | Composite · gRPC | 2 of 8 |
| 🥈 Silver | Test profile | HTTP/2 · JSON (h2c) | 2 of 21 |
| 🥈 Silver | Test profile | WebSocket · Echo | 2 of 27 |
| 🥈 Silver | Test profile | gRPC · Unary | 2 of 8 |
| 🥈 Silver | Test profile | gRPC · Unary TLS | 2 of 8 |
| 🥉 Bronze | Family composite | Composite · HTTP/3 | 3 of 15 |
| 🥉 Bronze | Family composite | Composite · WebSocket | 3 of 27 |
| 🥉 Bronze | Test profile | Connection · Short-lived | 3 of 81 |
| 🥉 Bronze | Test profile | HTTP/2 · Baseline | 3 of 26 |
| 🥉 Bronze | Test profile | HTTP/2 · Baseline (h2c) | 3 of 21 |
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 | 12 of 81 | 5495 |
| HTTP/2 | 4 of 26 | 2789 |
| HTTP/3 | 3 of 15 | 1320 |
| gRPC | 2 of 8 | 1449 |
| WebSocket | 3 of 27 | 2420 |
Every result
Alpha Round, 34 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 | 2,852,340 | 1.43ms | 24.20ms | 6643.2% | 506MiB |
| Connection | Pipelined | 4,096 | 14,575,354 | 4.48ms | 66.30ms | 6710.2% | 343MiB |
| Connection | Short-lived | 4,096 | 2,295,363 | 1.76ms | 9.48ms | 6480.8% | 520MiB |
| Efficiency | Latency-10K | 1,024 | 9,979 | 74.9us | 104.0us | 32.4% | 152MiB |
| Efficiency | Latency-1M | 1,024 | 997,899 | 108.1us | 195.0us | 2829.4% | 301MiB |
| Efficiency | Latency-500K/8 | 1,024 | 418,959 | 1597254.2us | 3810304.0us | 793.3% | 105MiB |
| Workload | JSON Comp | 4,096 | 657,336 | 6.22ms | 76.10ms | 6576.1% | 331MiB |
| Workload | JSON Comp | 16,384 | 643,851 | 24.91ms | 319.50ms | 6550.7% | 552MiB |
| Workload | JSON TLS | 4,096 | 356,381 | 11.43ms | 108.87ms | 6296.4% | 606MiB |
| Workload | 8Gbit | 512 | 49,072 | 109.4us | 137.0us | 270.5% | 202MiB |
| Workload | Static TLS | 1,024 | 143,217 | 7.16ms | 43.52ms | 6386.1% | 711MiB |
| HTTP/2 | Baseline | 256 | 9,322,107 | 2.52ms | 18.82ms | 6320.1% | 238MiB |
| HTTP/2 | Baseline | 1,024 | 8,815,612 | 11.28ms | 118.46ms | 6428.6% | 553MiB |
| HTTP/2 | Static | 256 | 108,842 | 73.36ms | 325.07ms | 6297.3% | 659MiB |
| HTTP/2 | Static | 1,024 | 107,278 | 287.20ms | 1.23s | 6267.5% | 1.3GiB |
| HTTP/2 | Baseline (h2c) | 256 | 9,663,836 | 2.42ms | 6.88ms | 6395.6% | 236MiB |
| HTTP/2 | Baseline (h2c) | 1,024 | 9,203,108 | 10.64ms | 80.44ms | 6358.2% | 488MiB |
| HTTP/2 | Baseline (h2c) | 4,096 | 9,033,659 | 41.63ms | 389.71ms | 6437.0% | 1.4GiB |
| HTTP/2 | JSON (h2c) | 1,024 | 2,154,451 | 15.39ms | 86.44ms | 6290.3% | 504MiB |
| HTTP/2 | JSON (h2c) | 4,096 | 2,151,044 | 58.05ms | 904.46ms | 6462.1% | 1.2GiB |
| HTTP/3 | Baseline | 64 | 5,040,889 | 849us | 2.07ms | 3625.5% | 201MiB |
| HTTP/3 | Static | 64 | 92,724 | 43.72ms | 115.90ms | 4151.8% | 507MiB |
| gRPC | Unary | 256 | 4,587,276 | 5.38ms | 13.34ms | 6379.9% | 237MiB |
| gRPC | Unary | 1,024 | 4,421,801 | 22.16ms | 184.03ms | 6331.6% | 504MiB |
| gRPC | Unary TLS | 256 | 4,502,723 | 5.46ms | 27.84ms | 6329.4% | 252MiB |
| gRPC | Unary TLS | 1,024 | 4,436,106 | 21.90ms | 187.98ms | 6423.4% | 575MiB |
| WebSocket | Echo | 512 | 3,870,821 | 131us | 475us | 6390.3% | 147MiB |
| WebSocket | Echo | 4,096 | 3,988,248 | 1.02ms | 13.30ms | 6476.2% | 194MiB |
| WebSocket | Echo | 16,384 | 3,950,042 | 4.05ms | 63.60ms | 6443.6% | 364MiB |
| WebSocket | Echo Pipelined | 512 | 29,827,484 | 273us | 1.06ms | 6739.9% | 140MiB |
| WebSocket | Echo Pipelined | 4,096 | 33,205,830 | 1.97ms | 23.80ms | 6776.5% | 176MiB |
| WebSocket | Echo Pipelined | 16,384 | 34,164,768 | 7.54ms | 75.40ms | 6382.7% | 306MiB |
| WebSocket | Echo Short-lived | 512 | 1,875,608 | 165us | 702us | 5752.6% | 206MiB |
| WebSocket | Echo Short-lived | 4,096 | 2,117,405 | 1.38ms | 7.79ms | 6213.0% | 269MiB |
Compare flare with any entry, in any language · Every Mojo entry, ranked
Results updated · How the benchmark is run · The machine · Add or fix an entry