genhttp-ioxide
Emerging · C# · engine: ioxide · standard configuration · completeness 4/4
GenHTTP 11 on .NET 11 on a custom io_uring server engine (the ioxide runtime) instead of the default socket engine. Built from the GenHTTP 11 preview 24 packages, which carry the merged ioxide engine branch (PR #887): TLS is terminated in the engine itself, with HTTP/2 and HTTP/3: :8080 is HTTP/1.1, :8082 h2c, :8081 HTTP/1.1 over TLS, and :8443 serves HTTP/1.1 and HTTP/2 over TCP plus HTTP/3 over QUIC on the same port. Static is served by IoxideFiles, which reads bodies positionally off the io_uring ring through a per-reactor descriptor snapshot; responses go through GenHTTP's own routing + serialization; Postgres rides ioxide.pg (per-reactor ring-native pool).
Achievements
🥇 8 Gold · 🥈 4 Silver · 🥉 6 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 | Family composite | Composite · WebSocket | 1 of 23 |
| 🥇 Gold | Within its language | C# · HTTP/1.1 | 1 of 10 |
| 🥇 Gold | Within its language | C# · HTTP/2 | 1 of 5 |
| 🥇 Gold | Within its language | C# · HTTP/3 | 1 of 5 |
| 🥇 Gold | Within its language | C# · WebSocket | 1 of 6 |
| 🥇 Gold | Test profile | Connection · Short-lived | 1 of 76 |
| 🥇 Gold | Test profile | HTTP/2 · Baseline | 1 of 23 |
| 🥇 Gold | Test profile | HTTP/2 · Baseline (h2c) | 1 of 18 |
| 🥈 Silver | Family composite | Composite · HTTP/2 | 2 of 23 |
| 🥈 Silver | Family composite | Composite · HTTP/3 | 2 of 13 |
| 🥈 Silver | Test profile | HTTP/3 · Baseline | 2 of 13 |
| 🥈 Silver | Test profile | WebSocket · Echo Pipelined | 2 of 20 |
| 🥉 Bronze | Family composite | Composite · HTTP/1.1 | 3 of 76 |
| 🥉 Bronze | Test profile | Connection · Baseline | 3 of 76 |
| 🥉 Bronze | Test profile | HTTP/2 · JSON (h2c) | 3 of 18 |
| 🥉 Bronze | Test profile | HTTP/2 · Static | 3 of 21 |
| 🥉 Bronze | Test profile | HTTP/3 · Static | 3 of 13 |
| 🥉 Bronze | Test profile | WebSocket · Echo Short-lived | 3 of 14 |
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 | 3 of 76 | 6850 |
| HTTP/2 | 2 of 23 | 3286 |
| HTTP/3 | 2 of 13 | 1307 |
| WebSocket | 1 of 23 | 2633 |
Every result
Alpha Round, 32 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 | 3,163,861 | 1.29ms | 4.51ms | 5936.0% | 1.5GiB |
| Connection | Pipelined | 4,096 | 21,552,544 | 3.04ms | 8.33ms | 5980.2% | 1.4GiB |
| Connection | Short-lived | 4,096 | 2,588,013 | 1.51ms | 5.40ms | 5859.5% | 1.7GiB |
| Concurrency | Async Delay | 32,000 | 1,929,825 | 16.45ms | 27.80ms | 5939.9% | 2.4GiB |
| Efficiency | Latency-10K | 1,024 | 9,981 | 77.1us | 106.0us | 23.6% | 1.3GiB |
| Efficiency | Latency-1M | 1,024 | 997,632 | 132.9us | 1358.0us | 2525.8% | 1.3GiB |
| Efficiency | Latency-500K/8 | 1,024 | 446,696 | 995512.2us | 3517440.0us | 789.7% | 290MiB |
| Workload | JSON Comp | 4,096 | 568,859 | 7.19ms | 24.40ms | 6230.7% | 1.8GiB |
| Workload | JSON Comp | 16,384 | 558,713 | 29.01ms | 59.00ms | 6286.4% | 2.1GiB |
| Workload | JSON TLS | 4,096 | 959,408 | 4.46ms | 96.41ms | 6160.7% | 2.1GiB |
| Workload | 8Gbit | 512 | 49,373 | 127.2us | 1130.0us | 263.1% | 3.4GiB |
| Workload | Static TLS | 1,024 | 697,503 | 1.54ms | 32.70ms | 6046.4% | 1.6GiB |
| Database | Async DB | 1,024 | 281,588 | 3.09ms | 11.10ms | 3471.2% | 1.5GiB |
| HTTP/2 | Baseline | 256 | 7,917,654 | 2.96ms | 14.66ms | 5177.4% | 1.6GiB |
| HTTP/2 | Baseline | 1,024 | 7,428,636 | 12.86ms | 85.01ms | 5367.1% | 1.7GiB |
| HTTP/2 | Static | 256 | 512,159 | 17.59ms | 96.97ms | 6137.4% | 1.7GiB |
| HTTP/2 | Static | 1,024 | 476,950 | 65.45ms | 215.23ms | 6011.0% | 3.1GiB |
| HTTP/2 | Baseline (h2c) | 256 | 7,966,858 | 2.99ms | 13.32ms | 5137.2% | 1.5GiB |
| HTTP/2 | Baseline (h2c) | 1,024 | 7,547,346 | 13.10ms | 54.68ms | 5287.0% | 1.6GiB |
| HTTP/2 | Baseline (h2c) | 4,096 | 8,397,760 | 49.47ms | 241.12ms | 5529.0% | 2.0GiB |
| HTTP/2 | JSON (h2c) | 1,024 | 1,792,014 | 18.02ms | 98.67ms | 5943.6% | 1.7GiB |
| HTTP/2 | JSON (h2c) | 4,096 | 1,583,159 | 79.76ms | 245.93ms | 5847.6% | 2.5GiB |
| HTTP/3 | Baseline | 64 | 1,819,209 | 2.73ms | 8.18ms | 3720.5% | 545MiB |
| HTTP/3 | Static | 64 | 225,147 | 20.27ms | 46.00ms | 4135.5% | 938MiB |
| WebSocket | Echo | 512 | 3,501,002 | 145us | 343us | 6089.0% | 1.3GiB |
| WebSocket | Echo | 4,096 | 3,550,024 | 1.15ms | 4.24ms | 6016.8% | 1.5GiB |
| WebSocket | Echo | 16,384 | 3,142,907 | 5.18ms | 13.60ms | 5849.5% | 2.0GiB |
| WebSocket | Echo Pipelined | 512 | 38,872,291 | 210us | 1.55ms | 5707.5% | 1.3GiB |
| WebSocket | Echo Pipelined | 4,096 | 39,373,856 | 1.67ms | 7.03ms | 5656.8% | 1.5GiB |
| WebSocket | Echo Pipelined | 16,384 | 33,326,876 | 7.79ms | 20.50ms | 5687.0% | 2.0GiB |
| WebSocket | Echo Short-lived | 512 | 2,035,279 | 159us | 540us | 5250.1% | 1.4GiB |
| WebSocket | Echo Short-lived | 4,096 | 2,366,072 | 1.24ms | 6.43ms | 5763.9% | 1.6GiB |
Compared with
The C# entries around genhttp-ioxide on the HTTP/1.1 composite, and the one leading them. The last column shows every profile side by side.
| Entry | Composite | vs genhttp-ioxide | |
|---|---|---|---|
| edixoi | 6756 | -1% | head to head |
| ioxide-pipes | 6398 | -7% | head to head |
Compare genhttp-ioxide with any C# entry · Compare genhttp-ioxide with any entry, in any language · Every C# entry, ranked
Results updated · How the benchmark is run · The machine · Add or fix an entry