HttpArena
Frameworks

tako

Emerging · Rust · engine: hyper · standard configuration · completeness 4/4

Tako 2.4.1 on hyper and Tokio, default configuration. Plain HTTP/1.1 and WebSocket on :8080 run tako's per-thread server (one current-thread runtime per CPU, SO_REUSEPORT listeners, PerThreadConfig::default()); h2c (:8082), HTTP/1.1 and h2 over rustls (:8081, :8443) and HTTP/3 over quinn (:8443/udp) run tako's multi-thread Server. Routing, Path/Query/State/body extractors and the Json responder through the tako API, the compression plugin with default settings on the JSON routes, ServeDir with precompressed .br/.gz sidecars read from disk per request, TakoWs for /ws, and deadpool-postgres for async-db.

Achievements

🥇 3 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/1.11 of 75
🥇 GoldWithin its languageRust · HTTP/1.11 of 8
🥇 GoldTest profileConcurrency · Async Delay1 of 71
🥈 SilverTest profileConnection · Baseline2 of 75
🥈 SilverTest profileConnection · Short-lived2 of 75
🥉 BronzeWithin its languageRust · WebSocket3 of 5
🥉 BronzeTest profileGateway · Gateway (H3)3 of 5

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.11 of 756992
HTTP/212 of 22630
HTTP/37 of 12533
Gateway4 of 61422
gRPC5 of 5298
WebSocket12 of 22894

Every result

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

CategoryProfileConnsReq/secAvgp99CPUMemory
ConnectionBaseline4,0963,258,5641.26ms2.47ms6221.5%109MiB
ConnectionPipelined4,09622,082,8922.98ms3.02ms6402.2%110MiB
ConnectionShort-lived4,0962,474,9101.62ms3.25ms6410.9%151MiB
ConcurrencyAsync Delay32,0002,264,70014.01ms17.40ms5097.6%918MiB
EfficiencyLatency-10K1,0249,98078.5us102.0us25.9%46MiB
EfficiencyLatency-1M1,024997,579100.0us170.0us2641.0%49MiB
EfficiencyLatency-500K/81,024470,285577631.3us1185280.0us799.1%33MiB
WorkloadJSON Comp4,096212,73919.18ms34.30ms6263.7%242MiB
WorkloadJSON Comp16,384209,41477.22ms141.70ms6024.6%604MiB
WorkloadJSON TLS4,096904,3033.95ms37.10ms6279.2%231MiB
Workload8Gbit51248,99893.2us133.0us258.4%95MiB
WorkloadStatic TLS1,024142,8586.28ms39.62ms3486.3%161MiB
DatabaseAsync DB1,024243,0773.71ms5.97ms3682.8%97MiB
HTTP/2Baseline256741,74034.00ms131.32ms4705.5%352MiB
HTTP/2Baseline1,024682,085119.46ms482.54ms4693.8%1.1GiB
HTTP/2Static256135,13459.31ms337.72ms3485.3%276MiB
HTTP/2Static1,024135,280184.40ms562.26ms3141.4%1.0GiB
HTTP/2Baseline (h2c)256747,32333.81ms132.49ms4638.2%388MiB
HTTP/2Baseline (h2c)1,024670,725112.56ms624.56ms4679.2%1021MiB
HTTP/2Baseline (h2c)4,096647,503276.75ms1.84s4716.3%2.5GiB
HTTP/2JSON (h2c)1,024716,52434.09ms341.39ms4382.2%398MiB
HTTP/2JSON (h2c)4,096648,651110.51ms3.98s4320.9%1.1GiB
HTTP/3Baseline64534,2050us0us2848.7%97MiB
HTTP/3Static64109,3540us0us2790.4%160MiB
gRPCUnary256578,01944.16ms192.48ms5026.6%359MiB
gRPCUnary1,024513,618163.90ms656.27ms5034.0%1.1GiB
gRPCUnary TLS256622,53734.90ms170.64ms4906.5%318MiB
gRPCUnary TLS1,024508,813146.65ms589.95ms4979.4%1.0GiB
GatewayGateway (H2)51276,262201.01ms1.95s3888.2%2.7GiB
GatewayGateway (H2)1,02466,115428.59ms4.87s3702.6%5.7GiB
GatewayGateway (H3)6483,26824.44ms86.59ms3431.9%416MiB
GatewayGateway (H3)25658,526135.57ms822.87ms2579.8%1.5GiB
GatewayProduction Stack25654,11978.09ms564.75ms3125.6%1.0GiB
GatewayProduction Stack1,02447,496331.22ms2.04s3319.2%3.0GiB
WebSocketEcho5123,345,847152us335us6632.1%101MiB
WebSocketEcho4,096420,8369.72ms18.50ms6079.0%608MiB
WebSocketEcho16,384404,79739.95ms65.50ms6090.8%2.3GiB
WebSocketEcho Pipelined5125,711,3921.43ms2.70ms6426.0%101MiB
WebSocketEcho Pipelined4,0965,353,81212.25ms16.20ms6643.5%614MiB
WebSocketEcho Pipelined16,3844,805,31453.63ms78.00ms6173.1%2.3GiB
WebSocketEcho Short-lived5121,626,053236us499us6165.4%127MiB
WebSocketEcho Short-lived4,096377,7619.43ms12.80ms6543.1%586MiB

Compared with

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

EntryCompositevs tako
cpeak7298+4%head to head
actix6638-5%head to head
ntex5761-18%head to head

Compare tako with any Rust entry · Compare tako with any entry, in any language · Every Rust entry, ranked

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