HttpArena
Frameworks

ioxide

Engine · C# · engine: io_uring

ioxide — a shared-nothing io_uring runtime for .NET, consumed as its published NuGet packages (ioxide, ioxide.pg, ioxide.timer, ioxide.file, ioxide.http2, ioxide.ngtcp2, ioxide.nghttp3). One ring per reactor thread: multishot accept/recv into provided buffer rings, inline IValueTaskSource continuations, raw-syscall io_uring (no liburing). The HTTP/1.1 handler (request line, headers, Content-Length + chunked bodies, keep-alive, pipelining, fragmented reads) is hand-written on the raw recv/send API; TLS terminates ring-natively (kTLS transmit offload, OpenSSL receive) on :8081, h2 over TLS (pure-C# ioxide.http2) on :8443, and HTTP/3 over QUIC (ngtcp2 + nghttp3) on udp:8443; async-db rides ioxide.pg's ring-native pooled Postgres driver (SCRAM-SHA-256), static on h1 reads the file descriptor straight into the connection's write slab (ioxide.file hands out descriptors, not bytes), so header and body leave in one flush with no intermediate buffer; h2/h3 serve the same assets from memory.

Achievements

🥇 1 Gold · 🥈 3 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.

MedalAwardFieldRank
🥇 GoldTest profileConcurrency · Async Delay1 of 6
🥈 SilverFamily compositeComposite · HTTP/32 of 5
🥈 SilverTest profileHTTP/3 · Baseline2 of 5
🥈 SilverTest profileHTTP/3 · Static2 of 5
🥉 BronzeFamily compositeComposite · HTTP/1.13 of 26
🥉 BronzeFamily compositeComposite · HTTP/23 of 7
🥉 BronzeWithin its languageC# · HTTP/1.13 of 7
🥉 BronzeTest profileHTTP/2 · Baseline3 of 7
🥉 BronzeTest profileHTTP/2 · Static3 of 7
🥉 BronzeTest profileWorkload · JSON TLS3 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.

FamilyRankComposite
HTTP/1.13 of 265777
HTTP/23 of 71411
HTTP/32 of 51325

Every result

Alpha Round, 18 runs. Requests per second is the best of three; latency, CPU and memory come from that run.

CategoryProfileConnsReq/secAvgp99CPUMemory
ConnectionBaseline4,0964,111,381996us1.44ms6443.2%342MiB
ConnectionPipelined4,09653,376,9821.23ms1.79ms6125.7%343MiB
ConnectionShort-lived4,0962,543,3141.49ms4.47ms5529.3%468MiB
ConcurrencyAsync Delay32,0002,782,55411.42ms14.60ms6074.0%1.1GiB
EfficiencyLatency-10K1,0249,98068.7us99.0us21.7%273MiB
EfficiencyLatency-1M1,024997,70891.0us163.0us2184.6%243MiB
EfficiencyLatency-500K/81,024498,864875.7us9228.0us776.9%113MiB
WorkloadJSON Comp4,096901,3724.50ms21.30ms6125.5%1.5GiB
WorkloadJSON Comp16,384895,34818.12ms54.50ms6075.5%4.7GiB
WorkloadJSON TLS4,0961,803,7232.18ms69.72ms6297.0%1.1GiB
WorkloadStatic TLS1,0241,120,816848.25us46.10ms6289.5%502MiB
DatabaseAsync DB1,024358,6102.18ms15.90ms3002.8%435MiB
HTTP/2Baseline25610,337,5191.99ms12.26ms4289.5%461MiB
HTTP/2Baseline1,02412,235,7676.81ms97.32ms5118.7%727MiB
HTTP/2Static2561,129,7547.45ms47.53ms5648.8%580MiB
HTTP/2Static1,024950,00933.15ms159.44ms5958.2%1.4GiB
HTTP/3Baseline643,711,8301.18ms2.93ms3190.2%277MiB
HTTP/3Static64545,9228.33ms19.39ms3496.3%675MiB

Compared with

The C# entries around ioxide on the HTTP/1.1 composite, and the one leading them. The last column shows every profile side by side.

EntryCompositevs ioxide
genhttp-ioxide7089+23%head to head
ioxide-pipes6448+12%head to head
simplew-tuned6096+6%head to head
genhttp4965-14%head to head
simplew4347-25%head to head

Compare ioxide with any C# entry · Compare 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