HttpArena
Frameworks

plod

Experimental · Goose · engine: goose-http · standard configuration · completeness 4/4

Plod: a REST framework for Goose, a memory-safe systems language with no heap allocator or garbage collector, with routes, scopes, middleware, and extractors in the manner of Actix, over goose-http's io_uring loop, one worker per CPU. JSON is serialized per request with plod::format_fields, through Goose's standard json writer, and compressed through plod::compressed at default levels; static files come from disk through plod::files, with their .br and .gz siblings; /async-db runs on goose-postgres's async pool, and production-stack's cache-aside is in process. HTTP/3 is goose-http's own QUIC, written in Goose over goose-tls's handshake and libcrypto's packet protection, with QPACK's static table, on UDP 8443 beside h2. The gateway profiles put stock nginx in front of it, with nginx's own HTTP/3 for gateway-h3.

Achievements

🥇 5 Gold · 🥈 5 Silver · 🥉 3 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/21 of 10
🥇 GoldFamily compositeComposite · HTTP/31 of 7
🥇 GoldTest profileHTTP/2 · JSON (h2c)1 of 10
🥇 GoldTest profileHTTP/3 · Baseline1 of 7
🥇 GoldTest profileHTTP/3 · Static1 of 6
🥈 SilverTest profileHTTP/2 · Baseline2 of 9
🥈 SilverTest profileHTTP/2 · Baseline (h2c)2 of 10
🥈 SilverTest profileHTTP/2 · Static2 of 9
🥈 SilverTest profileWebSocket · Echo Short-lived2 of 14
🥈 SilverTest profileWorkload · JSON TLS2 of 18
🥉 BronzeFamily compositeComposite · WebSocket3 of 14
🥉 BronzeTest profileWebSocket · Echo3 of 14
🥉 BronzeTest profileWebSocket · Echo Pipelined3 of 14

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.14 of 197331
HTTP/21 of 103801
HTTP/31 of 72000
Gateway1 of 23000
WebSocket3 of 142919

Every result

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

CategoryProfileConnsReq/secAvgp99CPUMemory
ConnectionBaseline4,0964,015,7811.02ms1.42ms6190.3%215MiB
ConnectionPipelined4,09632,476,5822.02ms2.85ms6215.7%216MiB
ConnectionShort-lived4,0962,676,2371.40ms2.13ms5626.2%215MiB
ConcurrencyAsync Delay32,0001,954,15016.27ms20.90ms3516.6%386MiB
EfficiencyLatency-10K1,0249,98170.4us99.0us22.6%168MiB
EfficiencyLatency-1M1,024997,96596.8us169.0us2305.4%171MiB
EfficiencyLatency-500K/81,024498,851356.6us5270.0us807.9%38MiB
WorkloadJSON Comp4,096936,7074.33ms10.00ms6668.0%362MiB
WorkloadJSON Comp16,384915,88517.82ms35.60ms6174.5%498MiB
WorkloadJSON TLS4,0961,792,1851.46ms51.78ms5448.5%252MiB
Workload8Gbit51249,21390.4us115.0us195.4%182MiB
WorkloadStatic TLS1,024918,1661.06ms16.71ms6434.0%271MiB
DatabaseAsync DB1,024352,7672.26ms16.70ms3315.6%186MiB
HTTP/2Baseline25614,536,938939us12.67ms3034.4%189MiB
HTTP/2Baseline1,02413,907,5443.69ms93.85ms2921.9%216MiB
HTTP/2Static256938,1158.60ms75.15ms6426.1%352MiB
HTTP/2Static1,024915,11133.92ms223.31ms6137.4%537MiB
HTTP/2Baseline (h2c)25614,750,298895us5.58ms2885.4%182MiB
HTTP/2Baseline (h2c)1,02414,427,0413.47ms18.07ms2858.4%209MiB
HTTP/2Baseline (h2c)4,09613,711,06014.20ms55.67ms2713.2%297MiB
HTTP/2JSON (h2c)1,0244,697,4356.43ms36.87ms6051.6%247MiB
HTTP/2JSON (h2c)4,0964,528,97426.33ms89.76ms6144.1%388MiB
HTTP/3Baseline646,822,294577us970us3614.2%188MiB
HTTP/3Static64923,3904.95ms10.56ms4450.2%276MiB
GatewayGateway (H2)512314,16251.36ms188.08ms4571.0%1.4GiB
GatewayGateway (H2)1,024309,878101.61ms311.88ms4635.9%1.7GiB
GatewayGateway (H3)64197,06112.32ms45.62ms3653.4%1.2GiB
GatewayGateway (H3)256200,53640.77ms174.33ms4007.4%1.6GiB
GatewayProduction Stack256253,08717.19ms78.11ms5138.7%1.2GiB
GatewayProduction Stack1,024207,37373.84ms3.44s4649.5%2.0GiB
WebSocketEcho5124,079,273124us277us6268.9%164MiB
WebSocketEcho4,0964,252,815959us1.26ms6059.4%201MiB
WebSocketEcho16,3843,940,7764.13ms5.43ms6401.3%343MiB
WebSocketEcho Pipelined51261,548,716132us279us6241.3%164MiB
WebSocketEcho Pipelined4,09663,398,3161.03ms1.47ms6164.1%208MiB
WebSocketEcho Pipelined16,38459,072,3104.40ms7.43ms5921.6%343MiB
WebSocketEcho Short-lived5122,149,052125us416us5171.8%168MiB
WebSocketEcho Short-lived4,0962,566,9761.05ms1.84ms5676.8%216MiB

Compare plod with any entry, in any language · Every Goose entry, ranked

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