HttpArena
Frameworks

actix

Flagship · Rust · standard configuration

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.

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. 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 71710
HTTP/22 of 16223
WebSocket5 of 20146

Every result

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

CategoryProfileConnsReq/secAvgp99CPUMemory
ConnectionBaseline5122,713,517188us284us6656.4%85MiB
ConnectionBaseline4,0962,775,1201.37ms2.56ms6675.4%154MiB
ConnectionPipelined51216,342,080500us546us6727.6%67MiB
ConnectionPipelined4,09616,338,4253.69ms5.31ms6656.8%196MiB
ConnectionShort-lived5121,121,546447us4.06ms4775.9%71MiB
ConnectionShort-lived4,0961,135,1571.17ms9.25ms4577.8%72MiB
WorkloadJSON4,0961,216,4372.55ms13.10ms6523.9%297MiB
WorkloadJSON Comp51218,90627.10ms42.10ms406.5%110MiB
WorkloadJSON Comp4,096152,60924.94ms45.90ms3762.3%309MiB
WorkloadJSON Comp16,384248,05155.67ms202.00ms6028.5%1.2GiB
WorkloadJSON TLS4,0961,157,2193.56ms64.52ms6580.5%229MiB
WorkloadUpload323,10010.28ms33.10ms2010.8%159MiB
WorkloadUpload2563,06277.31ms289.60ms3231.4%308MiB
WorkloadStatic1,02456,89621.84ms568.85ms6221.9%4.7GiB
WorkloadStatic4,09641,434109.48ms1.04s6020.3%6.3GiB
WorkloadStatic6,80045,482153.08ms1.10s5767.2%9.8GiB
WorkloadStatic TLS1,02455,88222.16ms493.97ms6220.4%4.6GiB
WorkloadStatic TLS4,09641,672120.61ms1.77s5858.6%6.2GiB
WorkloadStatic TLS6,80047,327159.17ms1.66s5505.0%11.0GiB
DatabaseAsync DB1,024149,3866.48ms11.00ms4015.0%125MiB
DatabaseCRUD4,096375,91910.20ms71.30ms2440.1%251MiB
Multi-endpointAPI-425631,6547.26ms32.30ms396.3%45MiB
Multi-endpointAPI-161,024120,1517.52ms33.50ms1584.9%106MiB
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

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