HttpArena
Frameworks

vanilla-epoll

Engine · V · engine: epoll

vanilla is a minimalist, high-performance HTTP server written in V: multi-threaded, non-blocking epoll I/O, lock-free, copy-free, SO_REUSEPORT. Handlers are pure (request)->[]u8 returning raw response bytes. JSON is built in a single allocation with precomputed prefixes (no per-request reflection); json-comp gzips on Accept-Encoding; json-tls terminates TLS 1.3 (Mbed TLS 4) on :8081 with ALPN http/1.1, reusing the same allocation-free /json serializer; static-tls serves the 20 /static files on :8081 through vanilla's static_assets (br/gzip negotiation; snapshots re-checked against the disk, so a replaced file is served at once), sending bodies of 16 KiB or more with sendfile(2) over kTLS; fortunes renders the DB rows + a runtime row with HTML escaping; async-db/crud/fortunes use the native async pg_async driver with per-worker pipelined pools. Pinned V master (built from source, bootstrap pinned). async parks each /delay/{ms} on a one-shot timerfd from a per-worker free-list and answers only once it reports an expiration; 8gbit echoes the POST body on the :8081 TLS listener (Content-Length or chunked, per-worker dechunk buffer); production-stack's /api cache-aside (X-Cache MISS/HIT, 1 s items / 30 s users TTL, invalidated on write) runs in-process — no Redis required. One worker per CPU of the container's cpuset.

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.16 of 375642
Gateway1 of 22982

Every result

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

CategoryProfileConnsReq/secAvgp99CPUMemory
ConnectionBaseline4,0964,117,078994us1.08ms6222.4%128MiB
ConnectionPipelined4,09640,088,6721.63ms1.84ms6369.8%134MiB
ConnectionShort-lived4,0961,045,2653.89ms40.30ms2938.2%83MiB
ConcurrencyAsync Delay32,0002,597,32912.22ms12.70ms6180.4%1.3GiB
EfficiencyLatency-10K1,0249,98170.7us96.0us21.2%58MiB
EfficiencyLatency-1M1,024997,95193.3us162.0us2133.2%62MiB
EfficiencyLatency-500K/81,024498,816806.9us8364.0us757.2%39MiB
WorkloadJSON Comp4,0962,530,8921.38ms33.00ms5721.8%150MiB
WorkloadJSON Comp16,3842,503,1256.19ms159.70ms5697.4%218MiB
WorkloadJSON TLS4,0961,609,88113.83ms759.35ms5607.2%307MiB
Workload8Gbit51249,158287.9us238.0us512.6%86MiB
WorkloadStatic TLS1,0241,104,7651.52ms182.98ms6230.5%112MiB
DatabaseAsync DB1,024345,6361.38ms8.87ms2972.1%120MiB
DatabaseFortunes1,024185,5404.05ms7.93ms6269.5%233MiB
GatewayGateway (H2)512380,49049.37ms264.91ms5079.6%1.7GiB
GatewayGateway (H2)1,024383,09086.71ms564.50ms5258.6%2.3GiB
GatewayGateway (H3)6492,11522.11ms81.94ms2748.1%532MiB
GatewayGateway (H3)25662,102128.11ms759.12ms2123.9%1.5GiB
GatewayProduction Stack256241,87320.25ms115.42ms3838.9%1.2GiB
GatewayProduction Stack1,024198,02383.11ms475.44ms3420.9%2.1GiB

Compared with

The V entries around vanilla-epoll on the HTTP/1.1 composite, and the one leading them. The last column shows every profile side by side.

EntryCompositevs vanilla-epoll
vanilla-io_uring6279+11%head to head

Compare vanilla-epoll with any V entry · Compare vanilla-epoll with any entry, in any language · Every V entry, ranked

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