spliffy
Emerging · JS · engine: uwebsockets · standard configuration · completeness 4/4
spliffy: directory based routing on uWebSockets.js. A route is a file, a handler returns the response, static files and WebSockets come from the same tree.
- Official repository
- Official website
- Benchmark implementation
- All JS entries, compared
- Open the leaderboard
Achievements
🥇 3 Gold · 🥈 1 Silver. 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 | JS · HTTP/1.1 | 1 of 7 |
| 🥇 Gold | Within its language | JS · WebSocket | 1 of 3 |
| 🥇 Gold | Test profile | Concurrency · Async Delay | 1 of 75 |
| 🥈 Silver | Family composite | Composite · WebSocket | 2 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 | 5 of 78 | 6424 |
| WebSocket | 2 of 24 | 2456 |
Every result
Alpha Round, 22 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,937,879 | 2.11ms | 2.99ms | 6770.1% | 1.7GiB |
| Connection | Pipelined | 4,096 | 32,285,499 | 2.03ms | 3.63ms | 6427.3% | 1.2GiB |
| Connection | Short-lived | 4,096 | 1,729,178 | 2.35ms | 9.35ms | 6587.9% | 1.7GiB |
| Concurrency | Async Delay | 32,000 | 2,265,480 | 14.01ms | 15.90ms | 6348.5% | 4.8GiB |
| Efficiency | Latency-10K | 1,024 | 9,978 | 83.0us | 115.0us | 32.9% | 1.3GiB |
| Efficiency | Latency-1M | 1,024 | 997,394 | 123.4us | 211.0us | 3101.9% | 1.5GiB |
| Efficiency | Latency-500K/8 | 1,024 | 412,072 | 1672066.6us | 4700160.0us | 792.3% | 230MiB |
| Workload | JSON Comp | 4,096 | 398,117 | 10.28ms | 29.30ms | 6277.8% | 9.2GiB |
| Workload | JSON Comp | 16,384 | 395,372 | 41.01ms | 94.10ms | 6242.2% | 9.8GiB |
| Workload | JSON TLS | 4,096 | 1,074,364 | 3.79ms | 33.15ms | 6580.3% | 1.8GiB |
| Workload | 8Gbit | 512 | 49,365 | 105.1us | 146.0us | 288.2% | 1.8GiB |
| Workload | Static TLS | 1,024 | 601,276 | 1.72ms | 39.24ms | 6563.4% | 1.7GiB |
| Database | Async DB | 1,024 | 209,755 | 4.37ms | 19.70ms | 6136.1% | 2.9GiB |
| Database | Fortunes | 1,024 | 62,685 | 15.06ms | 25.30ms | 6411.5% | 3.8GiB |
| WebSocket | Echo | 512 | 3,681,188 | 138us | 356us | 6390.2% | 1.5GiB |
| WebSocket | Echo | 4,096 | 3,772,710 | 1.08ms | 2.27ms | 6539.3% | 1.5GiB |
| WebSocket | Echo | 16,384 | 3,542,524 | 4.59ms | 9.09ms | 6105.6% | 1.6GiB |
| WebSocket | Echo Pipelined | 512 | 25,109,702 | 325us | 882us | 6753.1% | 1.5GiB |
| WebSocket | Echo Pipelined | 4,096 | 25,019,440 | 2.62ms | 4.62ms | 6545.8% | 1.6GiB |
| WebSocket | Echo Pipelined | 16,384 | 23,675,257 | 10.88ms | 14.20ms | 6283.9% | 1.7GiB |
| WebSocket | Echo Short-lived | 512 | 2,082,229 | 147us | 515us | 5485.5% | 1.5GiB |
| WebSocket | Echo Short-lived | 4,096 | 2,523,785 | 1.08ms | 2.50ms | 6214.6% | 1.6GiB |
Compared with
The JS entries around spliffy on the HTTP/1.1 composite, and the one leading them. The last column shows every profile side by side.
| Entry | Composite | vs spliffy | |
|---|---|---|---|
| fulmine.js | 6200 | -3% | head to head |
| morojs | 5652 | -12% | head to head |
Compare spliffy with any JS entry · Compare spliffy with any entry, in any language · Every JS entry, ranked
Results updated · How the benchmark is run · The machine · Add or fix an entry