HttpArena
Frameworks

httparena-io_uring

Experimental · C · standard configuration · completeness 4/4

libioxd — an HTTP/1.1 server library in C23 on a thread-per-core io_uring runtime with stackful coroutines. Raw io_uring syscalls, no liburing: multishot accept and recv over provided buffer rings, one ring and one SO_REUSEPORT listener per worker; a handler reads as linear code and every wait - a body read, a timer, a send - parks the connection on the ring. TLS 1.3 handshakes in OpenSSL, records in the kernel (kTLS) on :8081. Static files are served from memory by the library's static module, checked against the disk per request; the dataset is parsed once with cJSON, serialized per request by the library's JSON writer, and coded by its compression middleware (brotli, gzip) when the client asks.

Achievements

🥇 1 Gold · 🥈 2 Silver · 🥉 3 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 profileConnection · Baseline1 of 19
🥈 SilverTest profileConnection · Short-lived2 of 19
🥈 SilverTest profileWorkload · JSON Comp2 of 18
🥉 BronzeFamily compositeComposite · HTTP/1.13 of 19
🥉 BronzeTest profileConcurrency · Async Delay3 of 17
🥉 BronzeTest profileWorkload · JSON TLS3 of 18

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 197347

Every result

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

CategoryProfileConnsReq/secAvgp99CPUMemory
ConnectionBaseline4,0964,212,470971us1.32ms6424.5%573MiB
ConnectionShort-lived4,0962,734,4861.35ms1.89ms5712.2%928MiB
ConcurrencyAsync Delay32,0002,760,12711.51ms12.90ms6361.0%2.6GiB
EfficiencyLatency-10K1,0249,98270.2us92.0us23.8%300MiB
EfficiencyLatency-1M1,024997,66188.2us157.0us2127.4%326MiB
EfficiencyLatency-500K/81,024482,965285930.0us2976768.0us799.5%120MiB
WorkloadJSON Comp4,0961,128,4123.57ms8.87ms6798.2%884MiB
WorkloadJSON Comp16,3841,053,95615.39ms21.80ms6764.9%2.1GiB
WorkloadJSON TLS4,0961,739,6101.55ms139.80ms6008.3%874MiB
Workload8Gbit51249,222198.5us245.0us596.8%569MiB
WorkloadStatic TLS1,0241,091,9930.88ms25.44ms6438.3%524MiB

Compared with

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

EntryCompositevs httparena-io_uring
mongoose5870-20%head to head
nginx4077-45%head to head

Compare httparena-io_uring with any C entry · Compare httparena-io_uring with any entry, in any language · Every C entry, ranked

Results updated · How the benchmark is run · The machine · Add or fix an entry