cweb
Experimental · C · standard configuration
Zero-copy asynchronous HTTP/1.1 & WebSocket framework in C using io_uring and splice.
Achievements
🥉 2 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 |
|---|---|---|---|
| 🥉 Bronze | Test profile | Efficiency · Latency-1M | 3 of 21 |
| 🥉 Bronze | Test profile | WebSocket · Echo Pipelined | 3 of 17 |
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 | 15 of 23 | 4381 |
| WebSocket | 4 of 17 | 2891 |
Every result
Alpha Round, 17 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,810,219 | 1.07ms | 1.75ms | 6272.0% | 383MiB |
| Connection | Pipelined | 4,096 | 36,428,550 | 1.80ms | 2.31ms | 6384.8% | 382MiB |
| Connection | Short-lived | 4,096 | 2,700,826 | 1.40ms | 4.97ms | 5793.5% | 405MiB |
| Efficiency | Latency-10K | 1,024 | 9,981 | 73.5us | 104.0us | 26.4% | 330MiB |
| Efficiency | Latency-1M | 1,024 | 997,982 | 103.5us | 186.0us | 2660.3% | 332MiB |
| Efficiency | Latency-500K/8 | 1,024 | 492,194 | 128184.9us | 946432.0us | 830.5% | 66MiB |
| Workload | JSON Comp | 4,096 | 849,387 | 4.78ms | 87.10ms | 6334.6% | 396MiB |
| Workload | JSON Comp | 16,384 | 859,454 | 18.31ms | 416.80ms | 6339.7% | 501MiB |
| Database | Async DB | 1,024 | 314,466 | 2.79ms | 20.90ms | 2962.3% | 386MiB |
| WebSocket | Echo | 512 | 3,958,773 | 128us | 279us | 6393.7% | 323MiB |
| WebSocket | Echo | 4,096 | 4,093,295 | 1.00ms | 1.79ms | 6164.0% | 375MiB |
| WebSocket | Echo | 16,384 | 3,964,445 | 4.11ms | 6.23ms | 6079.4% | 570MiB |
| WebSocket | Echo Pipelined | 512 | 60,210,236 | 135us | 301us | 6389.2% | 319MiB |
| WebSocket | Echo Pipelined | 4,096 | 62,959,161 | 1.04ms | 1.75ms | 6245.8% | 374MiB |
| WebSocket | Echo Pipelined | 16,384 | 61,076,956 | 4.28ms | 5.81ms | 6163.5% | 562MiB |
| WebSocket | Echo Short-lived | 512 | 2,102,789 | 138us | 459us | 5404.0% | 338MiB |
| WebSocket | Echo Short-lived | 4,096 | 2,537,657 | 1.04ms | 1.81ms | 5809.4% | 405MiB |
Compared with
The C entries around cweb on the HTTP/1.1 composite, and the one leading them. The last column shows every profile side by side.
| Entry | Composite | vs cweb | |
|---|---|---|---|
| httparena-io_uring | 7356 | +68% | head to head |
| mongoose | 5844 | +33% | head to head |
| libreactorng | 3778 | -14% | head to head |
| nginx | 3671 | -16% | head to head |
Compare cweb with any C entry · Compare cweb with any entry, in any language · Every C entry, ranked
Results updated · How the benchmark is run · The machine · Add or fix an entry