HttpArena
Frameworks

epoxide

Engine · C# · engine: epoll

epoxide — ioxide's thread-per-core runtime on epoll instead of io_uring, on its raw recv/send API and nothing above it: the edixoi entry on the other kernel interface. One reactor per core, each owning its epoll set and its share of the SO_REUSEPORT listeners. A recv or a send is an ordinary syscall on the handler's own thread; a read or flush that has to wait parks on the reactor, which finishes it at the next readiness edge and resumes the handler inline. The HTTP/1.1 handling (request line, query string, case-insensitive headers, Content-Length and chunked bodies, keep-alive, pipelining, reads fragmented across recv boundaries) is edixoi's, hand-written against that API — no framework, no router. One handler answers on both doors: plaintext on :8080, and TLS on :8081 for json-tls and the 8gbit echo, terminated on the BoringSSL ioxide bundles, with kernel TX offload and BoringSSL receive. The async profile's wait is a deadline in the reactor's own timer queue, so a held connection costs a timer rather than a thread. Companion to edixoi, which serves the same profiles on ioxide's io_uring ring.

Achievements

🥈 3 Silver · 🥉 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.

MedalAwardFieldRank
🥈 SilverFamily compositeComposite · HTTP/1.12 of 40
🥈 SilverWithin its languageC# · HTTP/1.12 of 8
🥈 SilverTest profileConnection · Short-lived2 of 40
🥉 BronzeTest profileWorkload · JSON TLS3 of 27

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.12 of 406737

Every result

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

CategoryProfileConnsReq/secAvgp99CPUMemory
ConnectionBaseline4,0964,109,662996us1.35ms6230.7%190MiB
ConnectionShort-lived4,0962,730,2971.37ms2.26ms5739.8%885MiB
ConcurrencyAsync Delay32,0002,714,27811.68ms14.10ms5234.5%3.2GiB
EfficiencyLatency-10K1,0249,98171.4us103.0us22.0%79MiB
EfficiencyLatency-1M1,024997,95390.5us164.0us2170.3%92MiB
WorkloadJSON TLS4,0961,808,3411.36ms35.94ms6039.1%371MiB
Workload8Gbit51249,34689.7us118.0us184.3%141MiB

Compared with

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

EntryCompositevs epoxide
genhttp-ioxide7309+8%head to head
edixoi6785+1%head to head
ioxide-pipes6372-5%head to head
simplew-tuned5835-13%head to head

Compare epoxide with any C# entry · Compare epoxide with any entry, in any language · Every C# entry, ranked

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