fulmine
Emerging · JS · engine: uwebsockets · standard configuration
fulmine.js (drop-in Express 5 on uWebSockets.js) with its own cluster option for multi-core scaling.
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. 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 | 1 of 71 | 774 |
| Gateway | 2 of 4 | 157 |
| WebSocket | 1 of 20 | 225 |
Every result
Alpha Round, 38 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 | 512 | 1,316,432 | 388us | 1.06ms | 6771.4% | 2.6GiB |
| Connection | Baseline | 4,096 | 1,291,467 | 3.17ms | 4.41ms | 6611.5% | 2.7GiB |
| Connection | Pipelined | 512 | 31,111,097 | 262us | 690us | 6772.4% | 2.1GiB |
| Connection | Pipelined | 4,096 | 30,786,291 | 2.13ms | 4.96ms | 6649.9% | 2.1GiB |
| Connection | Short-lived | 512 | 1,081,000 | 463us | 2.04ms | 6199.2% | 2.7GiB |
| Connection | Short-lived | 4,096 | 1,165,391 | 3.50ms | 14.30ms | 6459.0% | 2.7GiB |
| Workload | JSON | 4,096 | 1,100,962 | 3.35ms | 10.20ms | 6659.2% | 8.1GiB |
| Workload | JSON Comp | 512 | 330,916 | 1.54ms | 9.61ms | 6167.8% | 8.3GiB |
| Workload | JSON Comp | 4,096 | 337,261 | 12.13ms | 38.10ms | 6376.9% | 9.0GiB |
| Workload | JSON Comp | 16,384 | 352,702 | 45.92ms | 107.50ms | 6336.0% | 10.4GiB |
| Workload | JSON TLS | 4,096 | 1,033,394 | 3.94ms | 94.73ms | 6587.0% | 8.0GiB |
| Workload | Upload | 32 | 2,041 | 15.69ms | 98.20ms | 3049.3% | 6.6GiB |
| Workload | Upload | 256 | 2,146 | 114.69ms | 970.60ms | 6050.2% | 7.2GiB |
| Workload | Static | 1,024 | 361,003 | 3.03ms | 28.36ms | 6566.3% | 6.4GiB |
| Workload | Static | 4,096 | 471,584 | 8.87ms | 49.75ms | 6586.5% | 7.7GiB |
| Workload | Static | 6,800 | 516,134 | 13.28ms | 64.56ms | 6525.1% | 7.6GiB |
| Workload | Static TLS | 1,024 | 315,147 | 3.39ms | 29.94ms | 6566.7% | 6.3GiB |
| Workload | Static TLS | 4,096 | 395,095 | 10.51ms | 134.51ms | 6474.6% | 7.3GiB |
| Workload | Static TLS | 6,800 | 416,223 | 16.43ms | 199.63ms | 6457.7% | 7.4GiB |
| Database | Async DB | 1,024 | 227,845 | 3.93ms | 33.50ms | 5655.9% | 4.3GiB |
| Database | CRUD | 4,096 | 357,239 | 11.39ms | 20.80ms | 4417.9% | 8.1GiB |
| Database | Fortunes | 1,024 | 68,103 | 13.80ms | 26.10ms | 6504.6% | 4.3GiB |
| Multi-endpoint | API-4 | 256 | 33,513 | 6.30ms | 36.20ms | 366.3% | 536MiB |
| Multi-endpoint | API-16 | 1,024 | 122,528 | 6.63ms | 38.60ms | 1525.0% | 2.1GiB |
| Gateway | Gateway (H2) | 512 | 89,306 | 167.61ms | 2.63s | 4289.1% | 4.7GiB |
| Gateway | Gateway (H2) | 1,024 | 79,999 | 348.96ms | 4.55s | 4080.9% | 6.6GiB |
| Gateway | Gateway (H3) | 64 | 90,476 | 22.52ms | 84.48ms | 3522.4% | 2.9GiB |
| Gateway | Gateway (H3) | 256 | 61,473 | 129.33ms | 757.23ms | 2566.4% | 4.1GiB |
| Gateway | Production Stack | 256 | 59,517 | 69.38ms | 1.93s | 4001.6% | 3.2GiB |
| Gateway | Production Stack | 1,024 | 49,151 | 322.48ms | 3.46s | 3933.2% | 5.3GiB |
| WebSocket | Echo | 512 | 3,725,045 | 136us | 363us | 6428.5% | 2.4GiB |
| WebSocket | Echo | 4,096 | 3,799,864 | 1.08ms | 2.22ms | 6543.1% | 2.4GiB |
| WebSocket | Echo | 16,384 | 3,586,189 | 4.53ms | 8.92ms | 6497.1% | 2.5GiB |
| WebSocket | Echo Pipelined | 512 | 24,900,399 | 328us | 866us | 6797.5% | 2.4GiB |
| WebSocket | Echo Pipelined | 4,096 | 24,972,233 | 2.62ms | 4.80ms | 6602.8% | 2.4GiB |
| WebSocket | Echo Pipelined | 16,384 | 23,843,945 | 10.82ms | 14.30ms | 6345.5% | 2.6GiB |
| WebSocket | Echo Short-lived | 512 | 2,083,660 | 144us | 515us | 5494.4% | 2.4GiB |
| WebSocket | Echo Short-lived | 4,096 | 2,565,878 | 1.04ms | 2.64ms | 6042.3% | 2.4GiB |
How the benchmark is run · The machine · Add or fix an entry