cnetmod
Engine · C++
Cross-platform pure C++23 Modules networking engine using native stackless coroutines, io_uring with epoll fallback, per-loop HTTP/1.1 and HTTP/2, BoringSSL QUIC/HTTP/3, routed WebSocket upgrades, and native gRPC. One image serves HTTP/1.1, WebSocket and gRPC h2c on :8080, TLS HTTP/1.1 on :8081, h2c on :8082, HTTP/2 on :8443/tcp and HTTP/3 on :8443/udp.
Achievements
🥇 11 Gold · 🥈 6 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/3 | 1 of 8 |
| 🥇 Gold | Family composite | Composite · gRPC | 1 of 4 |
| 🥇 Gold | Within its language | C++ · HTTP/1.1 | 1 of 3 |
| 🥇 Gold | Within its language | C++ · HTTP/2 | 1 of 3 |
| 🥇 Gold | Within its language | C++ · HTTP/3 | 1 of 3 |
| 🥇 Gold | Within its language | C++ · WebSocket | 1 of 3 |
| 🥇 Gold | Test profile | HTTP/2 · Baseline | 1 of 15 |
| 🥇 Gold | Test profile | HTTP/2 · Baseline (h2c) | 1 of 13 |
| 🥇 Gold | Test profile | HTTP/3 · Static | 1 of 8 |
| 🥇 Gold | Test profile | gRPC · Unary | 1 of 4 |
| 🥇 Gold | Test profile | gRPC · Unary TLS | 1 of 3 |
| 🥈 Silver | Family composite | Composite · Gateway | 2 of 3 |
| 🥈 Silver | Family composite | Composite · HTTP/2 | 2 of 16 |
| 🥈 Silver | Family composite | Composite · WebSocket | 2 of 20 |
| 🥈 Silver | Test profile | Gateway · Gateway (H2) | 2 of 3 |
| 🥈 Silver | Test profile | HTTP/2 · Static | 2 of 15 |
| 🥈 Silver | Test profile | HTTP/3 · Baseline | 2 of 8 |
| 🥉 Bronze | Test profile | Workload · 8Gbit | 3 of 24 |
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 | 6 of 43 | 6176 |
| HTTP/2 | 2 of 16 | 2884 |
| HTTP/3 | 1 of 8 | 1769 |
| Gateway | 2 of 3 | 2892 |
| gRPC | 1 of 4 | 2000 |
| WebSocket | 2 of 20 | 2780 |
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 | 3,875,973 | 1.05ms | 1.47ms | 6192.7% | 506MiB |
| Connection | Pipelined | 4,096 | 37,527,214 | 1.75ms | 2.33ms | 6653.9% | 512MiB |
| Connection | Short-lived | 4,096 | 2,625,178 | 1.44ms | 2.84ms | 6019.8% | 545MiB |
| Concurrency | Async Delay | 32,000 | 2,289,845 | 13.88ms | 15.20ms | 6446.0% | 1.5GiB |
| Efficiency | Latency-10K | 1,024 | 9,980 | 81.9us | 110.0us | 27.6% | 380MiB |
| Efficiency | Latency-1M | 1,024 | 997,924 | 91.6us | 166.0us | 2281.6% | 381MiB |
| Efficiency | Latency-500K/8 | 1,024 | 476,250 | 425610.5us | 2544640.0us | 818.3% | 141MiB |
| Workload | JSON Comp | 4,096 | 615,924 | 6.62ms | 16.50ms | 6392.5% | 1.1GiB |
| Workload | JSON Comp | 16,384 | 611,530 | 26.59ms | 47.60ms | 6322.3% | 2.0GiB |
| Workload | JSON TLS | 4,096 | 1,576,818 | 2.54ms | 41.12ms | 6432.6% | 712MiB |
| Workload | 8Gbit | 512 | 49,382 | 89.5us | 117.0us | 232.0% | 311MiB |
| Workload | Static TLS | 1,024 | 1,106,208 | 769.65us | 14.67ms | 6169.0% | 442MiB |
| Database | Async DB | 1,024 | 341,035 | 2.38ms | 20.80ms | 3728.5% | 538MiB |
| HTTP/2 | Baseline | 256 | 15,086,083 | 864us | 10.70ms | 2487.5% | 329MiB |
| HTTP/2 | Baseline | 1,024 | 14,601,798 | 3.28ms | 88.55ms | 2499.9% | 432MiB |
| HTTP/2 | Static | 256 | 1,507,704 | 4.35ms | 975.80ms | 5503.6% | 643MiB |
| HTTP/2 | Static | 1,024 | 1,448,101 | 17.84ms | 4.85s | 6162.5% | 801MiB |
| HTTP/2 | Baseline (h2c) | 256 | 15,377,216 | 895us | 23.38ms | 2410.7% | 309MiB |
| HTTP/2 | Baseline (h2c) | 1,024 | 15,371,007 | 3.44ms | 30.54ms | 2473.3% | 362MiB |
| HTTP/2 | Baseline (h2c) | 4,096 | 14,041,925 | 13.86ms | 32.95ms | 2344.9% | 823MiB |
| HTTP/2 | JSON (h2c) | 1,024 | 3,776,484 | 8.35ms | 57.44ms | 6399.5% | 646MiB |
| HTTP/2 | JSON (h2c) | 4,096 | 3,652,187 | 34.70ms | 99.00ms | 6304.4% | 1.4GiB |
| HTTP/3 | Baseline | 64 | 6,985,194 | 569us | 1.00ms | 2936.5% | 504MiB |
| HTTP/3 | Static | 64 | 877,583 | 4.92ms | 10.38ms | 4218.9% | 583MiB |
| gRPC | Unary | 256 | 7,475,039 | 2.07ms | 23.46ms | 1170.7% | 310MiB |
| gRPC | Unary | 1,024 | 7,237,252 | 7.57ms | 39.84ms | 1156.6% | 436MiB |
| gRPC | Unary TLS | 256 | 7,323,710 | 2.04ms | 10.70ms | 1211.4% | 354MiB |
| gRPC | Unary TLS | 1,024 | 7,023,742 | 7.29ms | 84.87ms | 1260.1% | 519MiB |
| Gateway | Gateway (H2) | 512 | 379,880 | 42.71ms | 161.08ms | 5979.8% | 2.7GiB |
| Gateway | Gateway (H2) | 1,024 | 375,817 | 83.59ms | 292.67ms | 6131.3% | 3.5GiB |
| Gateway | Gateway (H3) | 64 | 83,154 | 24.49ms | 85.22ms | 3021.0% | 877MiB |
| Gateway | Gateway (H3) | 256 | 58,618 | 135.67ms | 789.35ms | 2271.1% | 1.9GiB |
| Gateway | Production Stack | 256 | 259,054 | 16.71ms | 75.37ms | 4375.7% | 1.4GiB |
| Gateway | Production Stack | 1,024 | 209,643 | 74.72ms | 3.59s | 3911.8% | 2.3GiB |
| WebSocket | Echo | 512 | 3,834,710 | 132us | 445us | 6487.1% | 378MiB |
| WebSocket | Echo | 4,096 | 4,044,246 | 1.00ms | 3.40ms | 6265.5% | 497MiB |
| WebSocket | Echo | 16,384 | 3,790,515 | 4.28ms | 12.20ms | 6165.6% | 1.0GiB |
| WebSocket | Echo Pipelined | 512 | 61,765,196 | 131us | 306us | 6298.2% | 373MiB |
| WebSocket | Echo Pipelined | 4,096 | 63,090,414 | 1.04ms | 1.33ms | 6437.3% | 500MiB |
| WebSocket | Echo Pipelined | 16,384 | 57,812,140 | 4.50ms | 5.13ms | 6110.9% | 1014MiB |
| WebSocket | Echo Short-lived | 512 | 2,079,116 | 141us | 528us | 5623.9% | 394MiB |
| WebSocket | Echo Short-lived | 4,096 | 2,510,451 | 1.12ms | 2.90ms | 6293.1% | 599MiB |
Compared with
The C++ entries around cnetmod on the HTTP/1.1 composite, and the one leading them. The last column shows every profile side by side.
| Entry | Composite | vs cnetmod | |
|---|---|---|---|
| aegon | 7330 | +19% | head to head |
| hical | 5804 | -6% | head to head |
| libuvcpp | 4994 | -19% | head to head |
Compare cnetmod with any C++ entry · Compare cnetmod with any entry, in any language · Every C++ entry, ranked
Results updated · How the benchmark is run · The machine · Add or fix an entry