genhttp-ioxide
Emerging · C# · engine: ioxide · tuned 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. Uses GenHTTP's published ioxide engine packages (GenHTTP.Engine.Ioxide / GenHTTP.Modules.IoxideFiles, PR #860, merged). Responses go through GenHTTP's own routing + serialization; Postgres rides ioxide.pg (per-reactor ring-native pool) and json-tls rides ioxide.tls (kTLS TX) on :8081.
Achievements
🥇 5 Gold · 🥉 1 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 · HTTP/1.1 | 1 of 91 |
| 🥇 Gold | Within its language | C# · HTTP/1.1 | 1 of 10 |
| 🥇 Gold | Within its language | C# · WebSocket | 1 of 7 |
| 🥇 Gold | Test profile | Connection · Baseline | 1 of 91 |
| 🥇 Gold | Test profile | Connection · Short-lived | 1 of 91 |
| 🥉 Bronze | Test profile | WebSocket · Echo Pipelined | 3 of 22 |
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 | 1 of 91 | 6211 |
| WebSocket | 4 of 26 | 2364 |
Every result
Alpha Round, 18 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,184,488 | 1.28ms | 4.45ms | 5771.9% | 525MiB |
| Connection | Pipelined | 4,096 | 21,410,087 | 3.06ms | 7.04ms | 6026.4% | 518MiB |
| Connection | Short-lived | 4,096 | 2,574,485 | 1.50ms | 5.01ms | 5913.7% | 676MiB |
| Efficiency | Latency-10K | 1,024 | 9,982 | 73.9us | 108.0us | 25.6% | 330MiB |
| Efficiency | Latency-1M | 1,024 | 998,032 | 127.8us | 1181.0us | 2496.0% | 330MiB |
| Workload | JSON Comp | 4,096 | 565,466 | 7.23ms | 23.40ms | 6120.0% | 821MiB |
| Workload | JSON Comp | 16,384 | 558,799 | 29.13ms | 59.40ms | 6315.1% | 1.1GiB |
| Workload | JSON TLS | 4,096 | 1,011,386 | 4.18ms | 90.22ms | 6064.0% | 1.1GiB |
| Workload | 8Gbit | 512 | 49,344 | 133.4us | 1205.0us | 308.1% | 643MiB |
| Database | Async DB | 1,024 | 276,052 | 3.11ms | 10.70ms | 3568.9% | 606MiB |
| WebSocket | Echo | 512 | 3,091,049 | 165us | 472us | 6037.8% | 379MiB |
| WebSocket | Echo | 4,096 | 3,224,180 | 1.27ms | 5.05ms | 5870.7% | 614MiB |
| WebSocket | Echo | 16,384 | 2,692,381 | 6.03ms | 17.00ms | 5807.4% | 1.1GiB |
| WebSocket | Echo Pipelined | 512 | 34,962,051 | 233us | 1.65ms | 5771.5% | 378MiB |
| WebSocket | Echo Pipelined | 4,096 | 36,136,220 | 1.81ms | 8.00ms | 6061.6% | 591MiB |
| WebSocket | Echo Pipelined | 16,384 | 29,692,550 | 8.80ms | 23.30ms | 5789.8% | 1.3GiB |
| WebSocket | Echo Short-lived | 512 | 1,849,670 | 192us | 639us | 5545.5% | 446MiB |
| WebSocket | Echo Short-lived | 4,096 | 2,138,442 | 1.47ms | 8.97ms | 5792.2% | 701MiB |
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 | |
|---|---|---|---|
| simplew-tuned | 5352 | -14% | head to head |
| ioxide | 4834 | -22% | 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