HttpArena
Frameworks

zix

Engine · Zig · engine: zix.Http1 URING Dispatch Model

HTTP/1.1 on the zix.Http1 raw engine, .URING dispatch: per-worker SO_REUSEPORT io_uring loops, comptime Router, staged send sink. Dual listener: cleartext 8080, TLS 1.3 on 8081. Database routes run on engine-worker lanes, each worker pumping its own pipelined postgrez connections on its ring with named prepared statements. No response cache and no startup pre-serialization anywhere: json serializes every field per request and compresses per request, static opens the file per request. The crud row cache is the 200 ms cache-aside the crud profile itself defines.

Achievements

🥇 11 Gold · 🥈 2 Silver · 🥉 2 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
🥇 GoldFamily compositeComposite · HTTP/21 of 7
🥇 GoldFamily compositeComposite · HTTP/31 of 5
🥇 GoldFamily compositeComposite · WebSocket1 of 9
🥇 GoldWithin its languageZig · HTTP/1.11 of 3
🥇 GoldTest profileConnection · Baseline1 of 26
🥇 GoldTest profileHTTP/2 · Static1 of 7
🥇 GoldTest profileHTTP/3 · Baseline1 of 5
🥇 GoldTest profileHTTP/3 · Static1 of 5
🥇 GoldTest profileWebSocket · Echo1 of 9
🥇 GoldTest profileWebSocket · Echo Short-lived1 of 4
🥇 GoldTest profileWorkload · JSON TLS1 of 14
🥈 SilverTest profileHTTP/2 · Baseline2 of 7
🥈 SilverTest profileHTTP/2 · Baseline (h2c)2 of 5
🥉 BronzeTest profileConnection · Short-lived3 of 26
🥉 BronzeTest profileWebSocket · Echo Pipelined3 of 8

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.15 of 264839
HTTP/21 of 72943
HTTP/31 of 52000
gRPC1 of 22000
WebSocket1 of 92958

Every result

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

CategoryProfileConnsReq/secAvgp99CPUMemory
ConnectionBaseline4,0964,442,329921us1.19ms6427.0%194MiB
ConnectionPipelined4,09658,761,6161.11ms1.59ms6408.9%193MiB
ConnectionShort-lived4,0962,708,1921.37ms1.89ms5826.4%236MiB
EfficiencyLatency-10K1,0249,98075.5us102.0us26.1%146MiB
EfficiencyLatency-1M1,024997,527117.9us153.0us2072.8%145MiB
WorkloadJSON Comp4,0961,046,5813.87ms8.60ms6825.8%212MiB
WorkloadJSON Comp16,3841,018,80815.97ms23.70ms6533.4%527MiB
WorkloadJSON TLS4,0961,845,2481.38ms109.34ms5396.1%280MiB
WorkloadStatic TLS1,024339,6893.01ms30.48ms6603.4%228MiB
DatabaseAsync DB1,024400,4441.98ms20.40ms3183.3%337MiB
HTTP/2Baseline25614,076,6131.09ms17.29ms4108.2%120MiB
HTTP/2Baseline1,02414,090,5343.65ms99.66ms4164.7%216MiB
HTTP/2Static2561,692,0453.58ms60.58ms5935.6%217MiB
HTTP/2Static1,0241,650,64016.19ms169.67ms6431.3%563MiB
HTTP/2Baseline (h2c)25613,956,7261.05ms6.54ms3999.4%106MiB
HTTP/2Baseline (h2c)1,02414,569,9013.78ms58.31ms4171.5%126MiB
HTTP/2Baseline (h2c)4,09613,411,07814.89ms58.21ms3900.5%220MiB
HTTP/2JSON (h2c)1,0246,821,5892.42ms18.67ms3891.6%177MiB
HTTP/2JSON (h2c)4,0966,746,44011.33ms104.64ms4204.8%425MiB
HTTP/3Baseline649,086,240437us796us1281.9%412MiB
HTTP/3Static64595,5866.42ms20.04ms3297.5%412MiB
gRPCUnary2567,000,5552.20ms9.47ms2791.2%180MiB
gRPCUnary1,0247,030,1977.52ms32.57ms2904.3%206MiB
gRPCUnary TLS2566,962,1472.22ms20.73ms2903.7%201MiB
gRPCUnary TLS1,0246,781,1467.66ms98.54ms2877.7%318MiB
WebSocketEcho5124,277,156119us202us6402.6%206MiB
WebSocketEcho4,0964,469,914915us1.20ms6419.3%251MiB
WebSocketEcho16,3844,254,8433.84ms4.59ms6408.1%487MiB
WebSocketEcho Pipelined51260,193,061135us294us6381.1%211MiB
WebSocketEcho Pipelined4,09666,037,087991us2.00ms6239.8%248MiB
WebSocketEcho Pipelined16,38461,907,6764.21ms8.35ms6152.3%497MiB
WebSocketEcho Short-lived5122,254,504116us351us5259.0%176MiB
WebSocketEcho Short-lived4,0962,566,1061.02ms1.74ms5761.4%280MiB

Compared with

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

EntryCompositevs zix
swerver6825+41%head to head
libxev3920-19%head to head
zeemo3773-22%head to head

Compare zix with any Zig entry · Compare zix with any entry, in any language · Every Zig entry, ranked

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