HttpArena
Frameworks

nilo

Emerging · Zig · engine: nilo_http on zio · standard configuration · completeness 4/4

A toolkit for Zig 0.16 whose largest module is an HTTP/1.1 server on zio fibers (io_uring, epoll, kqueue). A plain function is a route: its argument list is the routing, the typed input, the 400 for anything that does not fit, and the OpenAPI document. One allocation per request, 4,669 bytes per idle connection, and a wait parks the fiber rather than the thread. Serves cleartext on 8080 and TLS 1.3 on 8081 from one process. Refuses HTTP/2, HTTP/3, gRPC and templates on the record, which is why it sits out those profiles.

Achievements

🥇 3 Gold · 🥈 3 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 · WebSocket1 of 20
🥇 GoldTest profileWebSocket · Echo Pipelined1 of 17
🥇 GoldTest profileWorkload · JSON TLS1 of 73
🥈 SilverFamily compositeComposite · HTTP/1.12 of 77
🥈 SilverTest profileConnection · Baseline2 of 77
🥈 SilverTest profileConnection · Short-lived2 of 77
🥉 BronzeTest profileConcurrency · Async Delay3 of 73
🥉 BronzeTest profileWebSocket · Echo3 of 20

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 776799
WebSocket1 of 202567

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,0962,984,7741.37ms1.52ms6704.6%177MiB
ConnectionPipelined4,0968,398,6917.82ms12.70ms6190.9%149MiB
ConnectionShort-lived4,0962,290,4161.77ms10.60ms6000.9%271MiB
ConcurrencyAsync Delay32,0001,962,93715.22ms29.60ms5348.9%905MiB
EfficiencyLatency-10K1,0249,98276.1us110.0us32.1%69MiB
EfficiencyLatency-1M1,024998,061120.9us207.0us3490.3%70MiB
EfficiencyLatency-500K/81,024446,1131055180.5us2165760.0us794.0%42MiB
WorkloadJSON Comp4,096275,37614.81ms182.00ms6347.2%301MiB
WorkloadJSON Comp16,384266,44729.03ms397.40ms5994.9%453MiB
WorkloadJSON TLS4,0961,324,0323.24ms109.63ms6523.8%997MiB
Workload8Gbit51249,186110.1us150.0us433.5%129MiB
DatabaseAsync DB1,02467,77914.77ms63.60ms930.5%157MiB
WebSocketEcho5123,573,673142us277us6656.2%56MiB
WebSocketEcho4,0963,674,7081.11ms1.77ms6588.8%171MiB
WebSocketEcho16,3843,072,8074.47ms5.97ms6506.2%571MiB
WebSocketEcho Pipelined51252,899,977154us252us6436.9%56MiB
WebSocketEcho Pipelined4,09652,821,4081.24ms1.63ms6228.1%173MiB
WebSocketEcho Pipelined16,38445,043,4215.02ms6.34ms6570.9%564MiB
WebSocketEcho Short-lived5121,162,948372us1.36ms4006.7%90MiB
WebSocketEcho Short-lived4,0962,162,742935us3.48ms5979.3%245MiB

Compared with

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

EntryCompositevs nilo
swerver6825+0%head to head
zix4839-29%head to head
libxev3920-42%head to head

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

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