dusty
Emerging · Zig · engine: zio · standard configuration · completeness 4/4
Dusty HTTP framework on the zio async runtime (io_uring where available, epoll fallback). Router with params/wildcards, JSON, gzip, WebSocket. Standard configuration, no tuning.
Achievements
🥇 1 Gold · 🥈 3 Silver · 🥉 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 |
|---|---|---|---|
| 🥇 Gold | Test profile | Connection · Baseline | 1 of 76 |
| 🥈 Silver | Family composite | Composite · HTTP/1.1 | 2 of 76 |
| 🥈 Silver | Test profile | Efficiency · Latency-10K | 2 of 76 |
| 🥈 Silver | Test profile | WebSocket · Echo | 2 of 23 |
| 🥉 Bronze | Test profile | Efficiency · Latency-1M | 3 of 76 |
| 🥉 Bronze | Test profile | Workload · JSON Comp | 3 of 73 |
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 | 2 of 76 | 6938 |
| WebSocket | 5 of 23 | 1982 |
Every result
Alpha Round, 21 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,309,488 | 1.08ms | 1.88ms | 6317.3% | 198MiB |
| Connection | Pipelined | 4,096 | 4,379,900 | 12.90ms | 30.20ms | 6160.7% | 202MiB |
| Connection | Short-lived | 4,096 | 1,930,687 | 788us | 5.39ms | 6538.5% | 64MiB |
| Concurrency | Async Delay | 32,000 | 2,038,546 | 12.88ms | 15.80ms | 5434.1% | 1.3GiB |
| Efficiency | Latency-10K | 1,024 | 9,983 | 73.7us | 100.0us | 25.7% | 69MiB |
| Efficiency | Latency-1M | 1,024 | 998,221 | 96.3us | 198.0us | 2994.3% | 69MiB |
| Efficiency | Latency-500K/8 | 1,024 | 415,535 | 1305547.9us | 7841792.0us | 794.1% | 59MiB |
| Workload | JSON Comp | 4,096 | 397,047 | 3.34ms | 64.80ms | 6493.6% | 165MiB |
| Workload | JSON Comp | 16,384 | 395,703 | 3.78ms | 65.10ms | 6527.6% | 260MiB |
| Workload | JSON TLS | 4,096 | 989,946 | 3.62ms | 74.37ms | 6491.9% | 799MiB |
| Workload | 8Gbit | 512 | 49,191 | 116.1us | 136.0us | 237.9% | 133MiB |
| Database | Async DB | 1,024 | 290,326 | 3.00ms | 12.70ms | 4606.2% | 117MiB |
| Database | Fortunes | 1,024 | 266,652 | 2.26ms | 11.60ms | 5935.4% | 163MiB |
| WebSocket | Echo | 512 | 4,122,333 | 123us | 182us | 6404.0% | 49MiB |
| WebSocket | Echo | 4,096 | 3,984,877 | 980us | 1.95ms | 6236.9% | 200MiB |
| WebSocket | Echo | 16,384 | 3,667,349 | 1.58ms | 4.25ms | 6022.3% | 407MiB |
| WebSocket | Echo Pipelined | 512 | 5,098,339 | 1.61ms | 3.84ms | 6298.5% | 47MiB |
| WebSocket | Echo Pipelined | 4,096 | 5,100,719 | 11.21ms | 46.20ms | 6183.2% | 205MiB |
| WebSocket | Echo Pipelined | 16,384 | 5,049,024 | 14.79ms | 50.60ms | 5981.6% | 331MiB |
| WebSocket | Echo Short-lived | 512 | 2,109,272 | 100us | 263us | 6540.7% | 52MiB |
| WebSocket | Echo Short-lived | 4,096 | 2,054,956 | 137us | 641us | 6456.3% | 89MiB |
Compared with
The Zig entries around dusty on the HTTP/1.1 composite, and the one leading them. The last column shows every profile side by side.
| Entry | Composite | vs dusty | |
|---|---|---|---|
| nilo | 7489 | +8% | head to head |
| swerver | 7170 | +3% | head to head |
| zix | 4794 | -31% | head to head |
| uWebZockets | 4030 | -42% | head to head |
Compare dusty with any Zig entry · Compare dusty with any entry, in any language · Every Zig entry, ranked
Results updated · How the benchmark is run · The machine · Add or fix an entry