fulmine.js
Emerging · JS · engine: uwebsockets · standard configuration · completeness 4/4
fulmine.js (drop-in Express 5 on uWebSockets.js) with its own cluster option for multi-core scaling.
Achievements
🥇 3 Gold · 🥈 6 Silver · 🥉 1 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 | Family composite | Composite · Gateway | 1 of 4 |
| 🥇 Gold | Within its language | JS · HTTP/1.1 | 1 of 5 |
| 🥇 Gold | Test profile | Gateway · Gateway (H3) | 1 of 3 |
| 🥈 Silver | Family composite | Composite · WebSocket | 2 of 15 |
| 🥈 Silver | Test profile | Gateway · Gateway (H2) | 2 of 3 |
| 🥈 Silver | Test profile | WebSocket · Echo | 2 of 15 |
| 🥈 Silver | Test profile | WebSocket · Echo Pipelined | 2 of 12 |
| 🥈 Silver | Test profile | WebSocket · Echo Short-lived | 2 of 6 |
| 🥈 Silver | Test profile | Workload · JSON Comp | 2 of 67 |
| 🥉 Bronze | Family composite | Composite · HTTP/1.1 | 3 of 69 |
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 | 3 of 69 | 5116 |
| Gateway | 1 of 4 | 2388 |
| WebSocket | 2 of 15 | 2444 |
Every result
Alpha Round, 27 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,646,820 | 2.49ms | 3.21ms | 6791.8% | 2.6GiB |
| Connection | Pipelined | 4,096 | 32,530,268 | 2.01ms | 3.77ms | 6420.8% | 2.1GiB |
| Connection | Short-lived | 4,096 | 1,485,268 | 2.74ms | 11.00ms | 6611.2% | 2.7GiB |
| Concurrency | Async Delay | 32,000 | 2,076,210 | 15.29ms | 17.50ms | 6403.9% | 5.7GiB |
| Efficiency | Latency-10K | 1,024 | 9,982 | 86.3us | 121.0us | 37.2% | 2.1GiB |
| Efficiency | Latency-1M | 1,024 | 997,869 | 132.6us | 263.0us | 3911.7% | 2.5GiB |
| Workload | JSON Comp | 4,096 | 478,013 | 8.55ms | 26.90ms | 6373.7% | 7.6GiB |
| Workload | JSON Comp | 16,384 | 494,728 | 32.76ms | 78.30ms | 6222.3% | 8.5GiB |
| Workload | JSON TLS | 4,096 | 1,022,233 | 4.02ms | 104.05ms | 6410.9% | 7.1GiB |
| Workload | 8Gbit | 512 | 49,377 | 111.2us | 159.0us | 330.3% | 2.7GiB |
| Workload | Static TLS | 1,024 | 594,289 | 1.72ms | 21.37ms | 6594.5% | 3.2GiB |
| Database | Async DB | 1,024 | 233,634 | 3.81ms | 26.20ms | 5770.7% | 4.3GiB |
| Database | Fortunes | 1,024 | 68,675 | 13.66ms | 23.50ms | 6497.8% | 4.2GiB |
| Gateway | Gateway (H2) | 512 | 279,500 | 56.54ms | 461.87ms | 5185.7% | 4.8GiB |
| Gateway | Gateway (H2) | 1,024 | 264,856 | 108.77ms | 1.51s | 5391.7% | 5.5GiB |
| Gateway | Gateway (H3) | 64 | 90,254 | 22.57ms | 83.92ms | 3337.2% | 3.5GiB |
| Gateway | Gateway (H3) | 256 | 61,282 | 129.87ms | 776.02ms | 2408.6% | 4.6GiB |
| Gateway | Production Stack | 256 | 116,894 | 35.91ms | 161.57ms | 2769.4% | 3.6GiB |
| Gateway | Production Stack | 1,024 | 105,309 | 130.92ms | 4.60s | 2641.7% | 4.3GiB |
| WebSocket | Echo | 512 | 3,689,829 | 138us | 406us | 6512.5% | 2.3GiB |
| WebSocket | Echo | 4,096 | 3,777,226 | 1.08ms | 2.25ms | 6276.7% | 2.4GiB |
| WebSocket | Echo | 16,384 | 3,523,105 | 4.62ms | 9.15ms | 6131.7% | 2.5GiB |
| WebSocket | Echo Pipelined | 512 | 24,189,686 | 337us | 890us | 6726.6% | 2.3GiB |
| WebSocket | Echo Pipelined | 4,096 | 24,296,604 | 2.69ms | 5.17ms | 6538.9% | 2.4GiB |
| WebSocket | Echo Pipelined | 16,384 | 23,202,560 | 11.13ms | 14.30ms | 6313.0% | 2.6GiB |
| WebSocket | Echo Short-lived | 512 | 2,076,963 | 147us | 522us | 5635.9% | 2.3GiB |
| WebSocket | Echo Short-lived | 4,096 | 2,551,279 | 1.06ms | 2.88ms | 6264.8% | 2.4GiB |
Compared with
The JS entries around fulmine.js on the HTTP/1.1 composite, and the one leading them. The last column shows every profile side by side.
| Entry | Composite | vs fulmine.js | |
|---|---|---|---|
| fulmine.js-tuned | 5160 | +1% | head to head |
| hyper-express | 4068 | -20% | head to head |
| ultimate-express | 3760 | -27% | head to head |
Compare fulmine.js with any JS entry · Compare fulmine.js with any entry, in any language · Every JS entry, ranked
Results updated · How the benchmark is run · The machine · Add or fix an entry