HttpArena
Frameworks

agensio

Infrastructure · C++

agensio: a static-file and reverse-proxy server on standalone Asio with its own HTTP/1.1, TLS, HTTP/2 and HTTP/3 (QUIC) layers, one event loop per worker and a lock-free per-worker index over one shared file cache that serves pre-compressed twins. The benchmark endpoints are a handler module compiled in for the arena (/baseline11, /baseline2, /json/{count}, /pipeline); /static from the mounted directory. HTTP/1.1 on :8080, h1 over TLS on :8081, h2c on :8082, h2 and h3 on :8443 (QUIC over UDP).

Achievements

🥇 9 Gold · 🥈 2 Silver · 🥉 1 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 6
🥇 GoldFamily compositeComposite · HTTP/21 of 5
🥇 GoldFamily compositeComposite · HTTP/31 of 3
🥇 GoldTest profileConnection · Pipelined1 of 6
🥇 GoldTest profileHTTP/2 · Static1 of 5
🥇 GoldTest profileHTTP/3 · Baseline1 of 3
🥇 GoldTest profileHTTP/3 · Static1 of 3
🥇 GoldTest profileWorkload · JSON TLS1 of 4
🥇 GoldTest profileWorkload · Static TLS1 of 4
🥈 SilverTest profileConnection · Baseline2 of 6
🥈 SilverTest profileHTTP/2 · Baseline2 of 5
🥉 BronzeTest profileConnection · Short-lived3 of 6

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 64949
HTTP/21 of 51912
HTTP/31 of 32000

Every result

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

CategoryProfileConnsReq/secAvgp99CPUMemory
ConnectionBaseline4,0963,558,5591.15ms2.10ms6136.1%297MiB
ConnectionPipelined4,0964,958,24113.23ms20.00ms6142.0%287MiB
ConnectionShort-lived4,0962,577,0491.55ms20.30ms5970.9%232MiB
WorkloadJSON TLS4,0961,716,0762.34ms57.44ms6431.4%587MiB
WorkloadStatic TLS1,0241,191,970782.07us30.02ms6270.1%270MiB
HTTP/2Baseline25614,744,015850us11.97ms1952.6%184MiB
HTTP/2Baseline1,02414,210,4333.40ms95.09ms1877.2%258MiB
HTTP/2Static2561,571,0214.34ms43.99ms5928.0%292MiB
HTTP/2Static1,0241,420,43221.08ms208.30ms6142.6%642MiB
HTTP/2Baseline (h2c)25615,185,367821us9.31ms1648.6%166MiB
HTTP/2Baseline (h2c)1,02414,782,7073.54ms34.80ms1546.2%204MiB
HTTP/2Baseline (h2c)4,09613,627,52414.17ms39.59ms1495.0%364MiB
HTTP/2JSON (h2c)1,0244,567,7246.13ms208.82ms6447.8%670MiB
HTTP/2JSON (h2c)4,0964,108,36430.21ms274.43ms6031.6%2.2GiB
HTTP/3Baseline648,634,941402us612us1516.5%203MiB
HTTP/3Static64745,0305.36ms26.54ms3381.7%212MiB

Compared with

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

EntryCompositevs agensio
hical6463+31%head to head
drogon4400-11%head to head
cutelyst4371-12%head to head

Compare agensio with any C++ entry · Compare agensio with any entry, in any language · Every C++ entry, ranked

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