wastnet
Experimental · Java · standard configuration · completeness 4/4
wastnet 1.0.3 annotation MVC (wastnet-mvc: @RestController / @Endpoint / @PathParam / @WebSocket) on top of its own zero-dependency Java NIO engine. Standard configuration: a single AnnotationRouterHandler is shared by four listeners - :8080 plaintext HTTP/1.1 (carrying the WebSocket upgrade), :8081 HTTP/1.1 + TLS advertising ALPN http/1.1, :8082 h2c prior-knowledge, :8443 h2 over TLS with ALPN h2. Static files go through the framework's HttpResourceRoute (sendfile zero-copy, ETag/Last-Modified); dynamic JSON responses are compressed by the framework's built-in GZIP (HttpOptions.GZIP) and JSON is serialized per request by wast, the library wastnet's own MVC layer uses. Each listener gets a worker pool sized to the 64 available cores, and HTTP/1.1 pipelining is enabled through HttpOptions.PIPELINE_ENABLED (it is off by default). Both are documented production settings.
Achievements
🥇 1 Gold · 🥉 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 |
|---|---|---|---|
| 🥇 Gold | Test profile | Efficiency · Latency-10K | 1 of 17 |
| 🥉 Bronze | Test profile | HTTP/2 · Baseline | 3 of 9 |
| 🥉 Bronze | Test profile | HTTP/2 · Baseline (h2c) | 3 of 10 |
| 🥉 Bronze | Test profile | HTTP/2 · Static | 3 of 9 |
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 | 12 of 19 | 4430 |
| HTTP/2 | 4 of 10 | 3088 |
| WebSocket | 12 of 14 | 1762 |
Every result
Alpha Round, 31 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 | 2,625,600 | 1.39ms | 3.00ms | 6339.1% | 2.6GiB |
| Connection | Pipelined | 4,096 | 13,432,073 | 4.45ms | 11.00ms | 6397.8% | 4.4GiB |
| Connection | Short-lived | 4,096 | 696,383 | 1.79ms | 15.50ms | 3304.8% | 1.5GiB |
| Concurrency | Async Delay | 32,000 | 263,833 | 86.77ms | 117.60ms | 1752.5% | 4.7GiB |
| Efficiency | Latency-10K | 1,024 | 9,983 | 70.0us | 107.0us | 30.1% | 1.2GiB |
| Efficiency | Latency-1M | 1,024 | 997,845 | 122.5us | 235.0us | 3004.7% | 1.4GiB |
| Efficiency | Latency-500K/8 | 1,024 | 417,240 | 1648466.6us | 3240960.0us | 789.5% | 1.3GiB |
| Workload | JSON Comp | 4,096 | 356,239 | 9.98ms | 25.60ms | 6000.4% | 4.0GiB |
| Workload | JSON Comp | 16,384 | 356,755 | 26.34ms | 52.60ms | 6269.7% | 5.6GiB |
| Workload | JSON TLS | 4,096 | 1,152,580 | 4.26ms | 230.86ms | 6354.4% | 5.3GiB |
| Workload | 8Gbit | 512 | 49,260 | 111.2us | 129.0us | 255.9% | 1.5GiB |
| Workload | Static TLS | 1,024 | 609,756 | 1.78ms | 49.31ms | 6402.0% | 2.1GiB |
| Database | Async DB | 1,024 | 211,871 | 4.30ms | 12.90ms | 3117.6% | 2.4GiB |
| Database | Fortunes | 1,024 | 106,387 | 9.44ms | 19.40ms | 5369.5% | 5.6GiB |
| HTTP/2 | Baseline | 256 | 13,881,153 | 1.08ms | 23.07ms | 3812.6% | 4.3GiB |
| HTTP/2 | Baseline | 1,024 | 13,474,059 | 4.51ms | 116.41ms | 3732.9% | 6.5GiB |
| HTTP/2 | Static | 256 | 698,483 | 11.50ms | 43.39ms | 6364.6% | 2.6GiB |
| HTTP/2 | Static | 1,024 | 684,320 | 46.23ms | 136.07ms | 6190.5% | 3.4GiB |
| HTTP/2 | Baseline (h2c) | 256 | 14,222,604 | 956us | 9.07ms | 3339.1% | 3.7GiB |
| HTTP/2 | Baseline (h2c) | 1,024 | 14,483,893 | 3.72ms | 34.27ms | 3514.0% | 4.9GiB |
| HTTP/2 | Baseline (h2c) | 4,096 | 12,274,392 | 15.08ms | 72.41ms | 3737.0% | 6.3GiB |
| HTTP/2 | JSON (h2c) | 1,024 | 2,796,431 | 11.41ms | 51.83ms | 6299.5% | 4.6GiB |
| HTTP/2 | JSON (h2c) | 4,096 | 2,559,254 | 45.90ms | 122.28ms | 6192.2% | 5.9GiB |
| WebSocket | Echo | 512 | 3,222,021 | 158us | 300us | 6570.8% | 1.0GiB |
| WebSocket | Echo | 4,096 | 3,197,514 | 1.10ms | 2.42ms | 6423.2% | 2.0GiB |
| WebSocket | Echo | 16,384 | 3,194,329 | 1.86ms | 4.38ms | 6268.4% | 1.9GiB |
| WebSocket | Echo Pipelined | 512 | 45,231,334 | 180us | 337us | 6575.8% | 1.3GiB |
| WebSocket | Echo Pipelined | 4,096 | 45,128,249 | 1.21ms | 2.67ms | 6611.4% | 2.4GiB |
| WebSocket | Echo Pipelined | 16,384 | 45,161,924 | 2.03ms | 4.97ms | 6548.8% | 2.3GiB |
| WebSocket | Echo Short-lived | 512 | 695,246 | 50us | 117us | 3059.5% | 1.4GiB |
| WebSocket | Echo Short-lived | 4,096 | 685,726 | 50us | 122us | 2891.2% | 1.4GiB |
Compared with
The Java entries around wastnet on the HTTP/1.1 composite, and the one leading them. The last column shows every profile side by side.
| Entry | Composite | vs wastnet | |
|---|---|---|---|
| vertx | 5585 | +26% | head to head |
| cardigan | 5238 | +18% | head to head |
| micronaut-production | 4574 | +3% | head to head |
| helidon-tuned | 4268 | -4% | head to head |
| micronaut | 4163 | -6% | head to head |
Compare wastnet with any Java entry · Compare wastnet with any entry, in any language · Every Java entry, ranked
Results updated · How the benchmark is run · The machine · Add or fix an entry