proxygen-coro
Engine · C++ · engine: proxygen
Meta's Proxygen native coroutine HTTPServer and HTTPSource APIs across HTTP/1.1, HTTP/1.1 TLS, h2c, HTTP/2 TLS, HTTP/3 QUIC, and RFC 6455 WebSockets.
Achievements
🥈 1 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.
| Medal | Award | Field | Rank |
|---|---|---|---|
| 🥈 Silver | Within its language | C++ · WebSocket | 2 of 3 |
| 🥉 Bronze | Family composite | Composite · HTTP/3 | 3 of 5 |
| 🥉 Bronze | Test profile | HTTP/3 · Baseline | 3 of 5 |
| 🥉 Bronze | Test profile | HTTP/3 · Static | 3 of 5 |
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 | 21 of 23 | 1073 |
| HTTP/2 | 5 of 7 | 976 |
| HTTP/3 | 3 of 5 | 780 |
| WebSocket | 8 of 9 | 1306 |
Every result
Alpha Round, 26 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 | 1,559,187 | 2.33ms | 3.00ms | 6327.2% | 173MiB |
| Connection | Pipelined | 4,096 | 1,619,441 | 37.31ms | 43.40ms | 6792.9% | 189MiB |
| Connection | Short-lived | 4,096 | 1,058,094 | 2.16ms | 15.30ms | 6670.2% | 133MiB |
| Workload | JSON Comp | 4,096 | 262,212 | 13.54ms | 46.80ms | 6321.5% | 196MiB |
| Workload | JSON Comp | 16,384 | 262,339 | 35.46ms | 63.40ms | 6206.4% | 368MiB |
| Workload | JSON TLS | 4,096 | 619,713 | 6.67ms | 85.33ms | 6259.3% | 206MiB |
| Workload | Static TLS | 1,024 | 566,267 | 1.80ms | 34.76ms | 6440.2% | 182MiB |
| HTTP/2 | Baseline | 256 | 5,185,268 | 4.73ms | 18.27ms | 6414.0% | 135MiB |
| HTTP/2 | Baseline | 1,024 | 4,232,549 | 22.38ms | 96.56ms | 6305.8% | 305MiB |
| HTTP/2 | Static | 256 | 569,867 | 13.84ms | 46.28ms | 6349.6% | 208MiB |
| HTTP/2 | Static | 1,024 | 576,921 | 53.90ms | 224.45ms | 6069.3% | 528MiB |
| HTTP/2 | Baseline (h2c) | 256 | 5,209,781 | 4.74ms | 12.32ms | 6484.3% | 135MiB |
| HTTP/2 | Baseline (h2c) | 1,024 | 4,293,346 | 22.98ms | 74.29ms | 6326.3% | 314MiB |
| HTTP/2 | Baseline (h2c) | 4,096 | 3,810,039 | 85.44ms | 306.24ms | 5970.5% | 879MiB |
| HTTP/2 | JSON (h2c) | 1,024 | 1,059,591 | 30.07ms | 50.77ms | 6367.3% | 275MiB |
| HTTP/2 | JSON (h2c) | 4,096 | 996,239 | 103.03ms | 391.73ms | 6035.7% | 734MiB |
| HTTP/3 | Baseline | 64 | 2,222,074 | 2.40ms | 5.17ms | 3639.1% | 160MiB |
| HTTP/3 | Static | 64 | 318,830 | 15.75ms | 33.61ms | 4108.9% | 376MiB |
| WebSocket | Echo | 512 | 1,876,350 | 272us | 361us | 6667.9% | 83MiB |
| WebSocket | Echo | 4,096 | 2,022,873 | 1.88ms | 2.35ms | 6380.0% | 168MiB |
| WebSocket | Echo | 16,384 | 1,827,585 | 3.82ms | 6.55ms | 6145.5% | 331MiB |
| WebSocket | Echo Pipelined | 512 | 28,333,958 | 288us | 374us | 6800.9% | 82MiB |
| WebSocket | Echo Pipelined | 4,096 | 31,309,600 | 1.80ms | 2.36ms | 6418.6% | 170MiB |
| WebSocket | Echo Pipelined | 16,384 | 28,020,371 | 4.60ms | 7.27ms | 6188.4% | 341MiB |
| WebSocket | Echo Short-lived | 512 | 1,008,248 | 152us | 511us | 6216.1% | 100MiB |
| WebSocket | Echo Short-lived | 4,096 | 1,010,338 | 177us | 767us | 6172.3% | 107MiB |
Compared with
The C++ entries around proxygen-coro on the HTTP/1.1 composite, and the one leading them. The last column shows every profile side by side.
| Entry | Composite | vs proxygen-coro | |
|---|---|---|---|
| drogon | 4461 | +316% | head to head |
| userver | 3256 | +203% | head to head |
| proxygen | 1227 | +14% | head to head |
Compare proxygen-coro with any C++ entry · Compare proxygen-coro with any entry, in any language · Every C++ entry, ranked
Results updated · How the benchmark is run · The machine · Add or fix an entry