libuvcpp
Emerging · C++ · engine: libuv · standard configuration · completeness 4/4
libuvcpp on the libuv event loop, one loop per available core. Routing, path and query params, static files and WebSocket through uvcpp_web_app, JSON written per request by the framework's own uvcpp_json_writer (values read out of the uvcpp_json DOM, no pre-rendered bytes), gzip through the built-in response compression, async Postgres through uvcpp_db_pool, and gRPC unary calls through the uvcpp_grpc module. One process serves HTTP/1.1 and prior-knowledge h2c on 8080, h2c on 8082, HTTP/2 over TLS on 8443, and HTTP/3 on 8443/udp, all from the same build; the gateway stacks put a stock Caddy edge in front of it.
Achievements
🥇 1 Gold · 🥈 5 Silver · 🥉 4 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 | Within its language | C++ · HTTP/1.1 | 1 of 4 |
| 🥈 Silver | Family composite | Composite · gRPC | 2 of 6 |
| 🥈 Silver | Test profile | Efficiency · Latency-10K | 2 of 76 |
| 🥈 Silver | Test profile | Gateway · Gateway (H3) | 2 of 6 |
| 🥈 Silver | Test profile | gRPC · Unary | 2 of 6 |
| 🥈 Silver | Test profile | gRPC · Unary TLS | 2 of 6 |
| 🥉 Bronze | Family composite | Composite · HTTP/2 | 3 of 23 |
| 🥉 Bronze | Test profile | HTTP/2 · Baseline | 3 of 23 |
| 🥉 Bronze | Test profile | HTTP/2 · Baseline (h2c) | 3 of 18 |
| 🥉 Bronze | Test profile | HTTP/3 · Baseline | 3 of 13 |
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 | 11 of 76 | 5037 |
| HTTP/2 | 3 of 23 | 2120 |
| HTTP/3 | 5 of 13 | 734 |
| Gateway | 4 of 7 | 1454 |
| gRPC | 2 of 6 | 1746 |
| WebSocket | 4 of 23 | 2023 |
Every result
Alpha Round, 42 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,639,189 | 2.50ms | 3.27ms | 6419.0% | 139MiB |
| Connection | Pipelined | 4,096 | 6,784,375 | 9.68ms | 12.30ms | 6360.9% | 148MiB |
| Connection | Short-lived | 4,096 | 1,309,891 | 3.09ms | 49.20ms | 6642.4% | 101MiB |
| Concurrency | Async Delay | 32,000 | 1,513,512 | 20.61ms | 23.10ms | 6394.1% | 490MiB |
| Efficiency | Latency-10K | 1,024 | 9,983 | 78.9us | 121.0us | 38.5% | 77MiB |
| Efficiency | Latency-1M | 1,024 | 997,940 | 168.6us | 462.0us | 4538.1% | 81MiB |
| Efficiency | Latency-500K/8 | 1,024 | 245,021 | 5008517.3us | 10899456.0us | 775.7% | 32MiB |
| Workload | JSON Comp | 4,096 | 325,476 | 12.32ms | 283.50ms | 6476.7% | 120MiB |
| Workload | JSON Comp | 16,384 | 321,152 | 30.31ms | 648.00ms | 6091.7% | 162MiB |
| Workload | JSON TLS | 4,096 | 672,436 | 6.03ms | 60.84ms | 6373.5% | 396MiB |
| Workload | 8Gbit | 512 | 49,175 | 103.6us | 152.0us | 319.8% | 128MiB |
| Workload | Static TLS | 1,024 | 190,096 | 5.36ms | 22.78ms | 3118.3% | 278MiB |
| Database | Async DB | 1,024 | 83,890 | 11.77ms | 41.70ms | 3415.7% | 192MiB |
| HTTP/2 | Baseline | 256 | 4,498,827 | 6.10ms | 37.07ms | 6152.2% | 111MiB |
| HTTP/2 | Baseline | 1,024 | 4,688,932 | 20.62ms | 118.80ms | 6265.0% | 178MiB |
| HTTP/2 | Static | 256 | 238,807 | 35.15ms | 171.99ms | 2420.0% | 189MiB |
| HTTP/2 | Static | 1,024 | 242,380 | 131.42ms | 473.88ms | 2463.2% | 793MiB |
| HTTP/2 | Baseline (h2c) | 256 | 4,850,874 | 5.80ms | 52.59ms | 6055.3% | 82MiB |
| HTTP/2 | Baseline (h2c) | 1,024 | 4,668,853 | 21.21ms | 566.60ms | 6423.9% | 164MiB |
| HTTP/2 | Baseline (h2c) | 4,096 | 4,702,573 | 81.85ms | 682.36ms | 6417.1% | 811MiB |
| HTTP/2 | JSON (h2c) | 1,024 | 1,496,312 | 21.42ms | 509.96ms | 6387.4% | 298MiB |
| HTTP/2 | JSON (h2c) | 4,096 | 1,486,566 | 85.21ms | 538.31ms | 6273.2% | 983MiB |
| HTTP/3 | Baseline | 64 | 1,167,034 | 4.46ms | 9.15ms | 4113.4% | 238MiB |
| HTTP/3 | Static | 64 | 114,206 | 32.76ms | 146.38ms | 3085.9% | 472MiB |
| gRPC | Unary | 256 | 3,391,572 | 7.84ms | 118.92ms | 6123.1% | 145MiB |
| gRPC | Unary | 1,024 | 3,263,606 | 30.29ms | 193.63ms | 6435.7% | 412MiB |
| gRPC | Unary TLS | 256 | 3,286,145 | 8.02ms | 77.81ms | 6041.9% | 165MiB |
| gRPC | Unary TLS | 1,024 | 3,092,506 | 31.49ms | 154.43ms | 6191.1% | 598MiB |
| Gateway | Gateway (H2) | 512 | 75,887 | 200.90ms | 2.15s | 4048.1% | 2.5GiB |
| Gateway | Gateway (H2) | 1,024 | 68,655 | 420.44ms | 4.61s | 3722.8% | 4.8GiB |
| Gateway | Gateway (H3) | 64 | 84,167 | 24.18ms | 85.33ms | 3685.2% | 390MiB |
| Gateway | Gateway (H3) | 256 | 62,547 | 126.95ms | 783.31ms | 2859.1% | 1.5GiB |
| Gateway | Production Stack | 256 | 53,685 | 78.49ms | 436.48ms | 3165.2% | 962MiB |
| Gateway | Production Stack | 1,024 | 46,274 | 346.24ms | 2.19s | 3301.1% | 2.8GiB |
| WebSocket | Echo | 512 | 2,751,709 | 185us | 458us | 6592.8% | 79MiB |
| WebSocket | Echo | 4,096 | 2,844,300 | 1.44ms | 1.93ms | 6375.3% | 130MiB |
| WebSocket | Echo | 16,384 | 2,516,942 | 6.08ms | 7.46ms | 6118.9% | 338MiB |
| WebSocket | Echo Pipelined | 512 | 30,027,149 | 272us | 645us | 6641.8% | 79MiB |
| WebSocket | Echo Pipelined | 4,096 | 28,938,721 | 2.26ms | 2.86ms | 6776.1% | 138MiB |
| WebSocket | Echo Pipelined | 16,384 | 25,179,465 | 9.83ms | 12.20ms | 6643.7% | 357MiB |
| WebSocket | Echo Short-lived | 512 | 1,550,796 | 211us | 620us | 5899.1% | 90MiB |
| WebSocket | Echo Short-lived | 4,096 | 1,777,709 | 375us | 792us | 6250.1% | 97MiB |
Compared with
The C++ entries around libuvcpp on the HTTP/1.1 composite, and the one leading them. The last column shows every profile side by side.
| Entry | Composite | vs libuvcpp | |
|---|---|---|---|
| hical | 6236 | +24% | head to head |
| agensio | 4949 | -2% | head to head |
| drogon | 4350 | -14% | head to head |
Compare libuvcpp with any C++ entry · Compare libuvcpp with any entry, in any language · Every C++ entry, ranked
Results updated · How the benchmark is run · The machine · Add or fix an entry