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.
| Medal | Award | Field | Rank |
|---|---|---|---|
| 🥇 Gold | Family composite | Composite · HTTP/1.1 | 1 of 6 |
| 🥇 Gold | Family composite | Composite · HTTP/2 | 1 of 5 |
| 🥇 Gold | Family composite | Composite · HTTP/3 | 1 of 3 |
| 🥇 Gold | Test profile | Connection · Pipelined | 1 of 6 |
| 🥇 Gold | Test profile | HTTP/2 · Static | 1 of 5 |
| 🥇 Gold | Test profile | HTTP/3 · Baseline | 1 of 3 |
| 🥇 Gold | Test profile | HTTP/3 · Static | 1 of 3 |
| 🥇 Gold | Test profile | Workload · JSON TLS | 1 of 4 |
| 🥇 Gold | Test profile | Workload · Static TLS | 1 of 4 |
| 🥈 Silver | Test profile | Connection · Baseline | 2 of 6 |
| 🥈 Silver | Test profile | HTTP/2 · Baseline | 2 of 5 |
| 🥉 Bronze | Test profile | Connection · Short-lived | 3 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.
| Family | Rank | Composite |
|---|---|---|
| HTTP/1.1 | 1 of 6 | 4949 |
| HTTP/2 | 1 of 5 | 1912 |
| HTTP/3 | 1 of 3 | 2000 |
Every result
Alpha Round, 16 runs. Requests per second is the best of three; latency, CPU and memory come from that run.
| Category | Profile | Conns | Req/sec | Avg | p99 | CPU | Memory |
|---|---|---|---|---|---|---|---|
| Connection | Baseline | 4,096 | 3,558,559 | 1.15ms | 2.10ms | 6136.1% | 297MiB |
| Connection | Pipelined | 4,096 | 4,958,241 | 13.23ms | 20.00ms | 6142.0% | 287MiB |
| Connection | Short-lived | 4,096 | 2,577,049 | 1.55ms | 20.30ms | 5970.9% | 232MiB |
| Workload | JSON TLS | 4,096 | 1,716,076 | 2.34ms | 57.44ms | 6431.4% | 587MiB |
| Workload | Static TLS | 1,024 | 1,191,970 | 782.07us | 30.02ms | 6270.1% | 270MiB |
| HTTP/2 | Baseline | 256 | 14,744,015 | 850us | 11.97ms | 1952.6% | 184MiB |
| HTTP/2 | Baseline | 1,024 | 14,210,433 | 3.40ms | 95.09ms | 1877.2% | 258MiB |
| HTTP/2 | Static | 256 | 1,571,021 | 4.34ms | 43.99ms | 5928.0% | 292MiB |
| HTTP/2 | Static | 1,024 | 1,420,432 | 21.08ms | 208.30ms | 6142.6% | 642MiB |
| HTTP/2 | Baseline (h2c) | 256 | 15,185,367 | 821us | 9.31ms | 1648.6% | 166MiB |
| HTTP/2 | Baseline (h2c) | 1,024 | 14,782,707 | 3.54ms | 34.80ms | 1546.2% | 204MiB |
| HTTP/2 | Baseline (h2c) | 4,096 | 13,627,524 | 14.17ms | 39.59ms | 1495.0% | 364MiB |
| HTTP/2 | JSON (h2c) | 1,024 | 4,567,724 | 6.13ms | 208.82ms | 6447.8% | 670MiB |
| HTTP/2 | JSON (h2c) | 4,096 | 4,108,364 | 30.21ms | 274.43ms | 6031.6% | 2.2GiB |
| HTTP/3 | Baseline | 64 | 8,634,941 | 402us | 612us | 1516.5% | 203MiB |
| HTTP/3 | Static | 64 | 745,030 | 5.36ms | 26.54ms | 3381.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.
| Entry | Composite | vs agensio | |
|---|---|---|---|
| hical | 6463 | +31% | head to head |
| drogon | 4400 | -11% | head to head |
| cutelyst | 4371 | -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