HttpArena
Frameworks

actix

Flagship · Rust · standard configuration · completeness 4/4

Actix-web 4 with rustls for TLS. Standard configuration: actix-files serves static content from disk per request via try_compressed(), which selects a pre-compressed .br/.gz sibling by Accept-Encoding through the framework API (no hand-rolled suffix lookup); the Compress middleware compresses dynamic responses (json-comp) on-the-fly. deadpool-postgres for async DB pooling (sized from DATABASE_MAX_CONN); crud reads go through an in-memory cache-aside (X-Cache MISS/HIT, invalidated on update — no Redis required). json-tls is served over HTTP/1.1-with-TLS on :8081; baseline-h2/static-h2 over h2 on :8443. serde_json per request. Pinned to actix git main for try_compressed() (unreleased in actix-files 0.6.10). Compiled with -O3 and thin LTO.

Achievements

🥇 5 Gold · 🥈 4 Silver · 🥉 5 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 71
🥇 GoldWithin its languageRust · HTTP/1.11 of 7
🥇 GoldTest profileConcurrency · Async Delay1 of 67
🥇 GoldTest profileConnection · Baseline1 of 71
🥇 GoldTest profileWebSocket · Echo Pipelined1 of 12
🥈 SilverWithin its languageRust · HTTP/22 of 4
🥈 SilverWithin its languageRust · WebSocket2 of 4
🥈 SilverTest profileHTTP/2 · Baseline (h2c)2 of 14
🥈 SilverTest profileWorkload · JSON TLS2 of 66
🥉 BronzeFamily compositeComposite · HTTP/23 of 18
🥉 BronzeFamily compositeComposite · WebSocket3 of 15
🥉 BronzeTest profileHTTP/2 · Baseline3 of 17
🥉 BronzeTest profileHTTP/2 · JSON (h2c)3 of 14
🥉 BronzeTest profileWebSocket · Echo3 of 15

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 716880
HTTP/23 of 181608
WebSocket3 of 151776

Every result

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

CategoryProfileConnsReq/secAvgp99CPUMemory
ConnectionBaseline4,0962,775,1201.37ms2.56ms6675.4%154MiB
ConnectionPipelined4,09616,338,4253.69ms5.31ms6656.8%196MiB
ConnectionShort-lived4,0961,135,1571.17ms9.25ms4577.8%72MiB
ConcurrencyAsync Delay32,0002,112,16813.37ms17.40ms5196.7%1009MiB
EfficiencyLatency-10K1,0249,98273.9us114.0us26.1%78MiB
EfficiencyLatency-1M1,024997,622112.0us177.0us2739.4%83MiB
EfficiencyLatency-500K/81,024421,6121542759.3us3077120.0us795.7%48MiB
WorkloadJSON Comp4,096541,2116.38ms37.60ms6276.8%210MiB
WorkloadJSON Comp16,384532,64917.60ms41.30ms6233.0%415MiB
WorkloadJSON TLS4,0961,157,2193.56ms64.52ms6580.5%229MiB
Workload8Gbit51249,40184.6us114.0us195.7%93MiB
WorkloadStatic TLS1,02455,88222.16ms493.97ms6220.4%4.6GiB
DatabaseAsync DB1,024149,3866.48ms11.00ms4015.0%125MiB
HTTP/2Baseline2563,884,2146.47ms17.98ms6348.5%173MiB
HTTP/2Baseline1,0243,056,93631.25ms95.31ms6287.4%592MiB
HTTP/2Static25651,989155.69ms1.58s5764.2%11.2GiB
HTTP/2Static1,02464,019514.33ms2.64s5068.6%37.0GiB
HTTP/2Baseline (h2c)2565,918,8274.12ms4.12ms6453.4%150MiB
HTTP/2Baseline (h2c)1,0244,282,44523.22ms23.22ms6451.7%496MiB
HTTP/2Baseline (h2c)4,0963,597,318101.66ms101.66ms6437.1%1.9GiB
HTTP/2JSON (h2c)1,0241,207,45626.87ms26.87ms5364.2%281MiB
HTTP/2JSON (h2c)4,0961,213,87599.60ms99.60ms6376.2%1011MiB
WebSocketEcho5123,341,436152us399us6371.0%51MiB
WebSocketEcho4,0963,409,3801.03ms2.02ms6233.3%201MiB
WebSocketEcho16,3843,245,8652.33ms4.48ms6062.1%485MiB
WebSocketEcho Pipelined51243,725,228186us307us6751.9%58MiB
WebSocketEcho Pipelined4,09643,075,5641.29ms1.82ms6392.9%212MiB
WebSocketEcho Pipelined16,38437,668,5253.30ms7.78ms5797.9%544MiB

Compared with

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

EntryCompositevs actix
ntex5956-13%head to head
tokio4738-31%head to head

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

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