HttpArena
Frameworks

araara

Emerging · OCaml · engine: hcs · standard configuration · completeness 3/4

araara: the OCaml 5 web stack on hcs (Eio, io_uring). HCS router, request/response helpers, Plug.Compress for JSON, Plug.Static for files (pre-compressed .br/.gz twins selected per request), hcs gRPC transport with ocaml-protoc codecs, simdjsont JSON, repodb for Postgres. HTTP/1.1, HTTP/2 (TLS and h2c) and WebSocket from one process, one single-domain worker per CPU with SO_REUSEPORT and the runtime's default GC settings.

Achievements

🥇 7 Gold · 🥈 1 Silver. 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 24
🥇 GoldFamily compositeComposite · gRPC1 of 7
🥇 GoldTest profileEfficiency · Latency-10K1 of 79
🥇 GoldTest profileHTTP/2 · Baseline1 of 24
🥇 GoldTest profileHTTP/2 · Baseline (h2c)1 of 19
🥇 GoldTest profilegRPC · Unary1 of 7
🥇 GoldTest profilegRPC · Unary TLS1 of 7
🥈 SilverTest profileHTTP/2 · Static2 of 22

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.111 of 795547
HTTP/21 of 243297
gRPC1 of 72000
WebSocket7 of 251985

Every result

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

CategoryProfileConnsReq/secAvgp99CPUMemory
ConnectionBaseline4,0962,667,8531.53ms2.13ms6423.5%784MiB
ConnectionPipelined4,09618,076,0123.63ms7.16ms6176.8%900MiB
ConnectionShort-lived4,0962,004,7852.02ms29.20ms6247.9%925MiB
ConcurrencyAsync Delay32,0001,302,42224.36ms29.90ms4401.8%2.0GiB
EfficiencyLatency-10K1,0249,98377.1us116.0us32.3%342MiB
EfficiencyLatency-1M1,024997,875126.9us246.0us3531.7%694MiB
EfficiencyLatency-500K/81,024353,0322873661.8us7092224.0us787.4%144MiB
WorkloadJSON Comp4,096341,70111.86ms187.80ms6318.7%919MiB
WorkloadJSON Comp16,384346,88343.34ms962.60ms6152.8%1.5GiB
WorkloadJSON TLS4,096750,0265.39ms56.00ms6381.9%975MiB
Workload8Gbit51249,376133.1us560.0us439.4%766MiB
WorkloadStatic TLS1,024644,7021.57ms31.16ms6581.9%484MiB
DatabaseAsync DB1,02491,33610.79ms82.40ms5931.8%457MiB
HTTP/2Baseline25610,790,6952.00ms24.98ms5426.3%725MiB
HTTP/2Baseline1,02410,462,0518.97ms89.05ms6300.4%833MiB
HTTP/2Static256690,51212.30ms456.31ms6320.7%1011MiB
HTTP/2Static1,024680,55244.04ms1.15s6185.8%1.1GiB
HTTP/2Baseline (h2c)25610,400,4582.12ms10.96ms5049.0%685MiB
HTTP/2Baseline (h2c)1,02411,515,9767.88ms61.72ms6183.8%788MiB
HTTP/2Baseline (h2c)4,09610,712,85434.79ms115.15ms6151.8%1.0GiB
HTTP/2JSON (h2c)1,0241,438,47922.09ms156.38ms6445.3%1.8GiB
HTTP/2JSON (h2c)4,0961,449,08587.56ms555.78ms6446.4%3.6GiB
gRPCUnary2565,869,2063.92ms15.18ms4750.1%748MiB
gRPCUnary1,0246,447,70712.75ms101.31ms5401.9%849MiB
gRPCUnary TLS2566,290,5563.36ms13.13ms4866.4%756MiB
gRPCUnary TLS1,0246,164,01113.60ms89.17ms6155.9%854MiB
WebSocketEcho5123,011,241169us346us6551.9%310MiB
WebSocketEcho4,0963,187,1271.28ms1.73ms6305.8%581MiB
WebSocketEcho16,3842,546,8516.34ms7.57ms6274.9%1.1GiB
WebSocketEcho Pipelined51224,887,232328us601us6494.0%461MiB
WebSocketEcho Pipelined4,09625,772,9282.54ms3.45ms6430.2%668MiB
WebSocketEcho Pipelined16,38419,520,08813.26ms15.40ms6294.0%1.1GiB
WebSocketEcho Short-lived5121,587,862228us651us6248.2%679MiB
WebSocketEcho Short-lived4,0961,813,553632us1.13ms6347.7%695MiB

Compare araara with any entry, in any language · Every OCaml entry, ranked

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