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
🥇 5 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 | Family composite | Composite · WebSocket | 1 of 15 |
| 🥇 Gold | Within its language | JS · HTTP/1.1 | 1 of 5 |
| 🥇 Gold | Test profile | Gateway · Gateway (H2) | 1 of 3 |
| 🥇 Gold | Test profile | Gateway · Gateway (H3) | 1 of 3 |
| 🥈 Silver | Family composite | Composite · HTTP/1.1 | 2 of 71 |
| 🥈 Silver | Test profile | Concurrency · Async Delay | 2 of 67 |
| 🥈 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 68 |
| 🥉 Bronze | Test profile | Efficiency · Latency-1M | 3 of 71 |
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 71 | 6248 |
| Gateway | 1 of 4 | 2534 |
| WebSocket | 1 of 15 | 2455 |
Every result
Alpha Round, 28 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,654,758 | 2.48ms | 3.38ms | 6794.4% | 2.7GiB |
| Connection | Pipelined | 4,096 | 33,710,054 | 1.94ms | 3.54ms | 6724.9% | 2.1GiB |
| Connection | Short-lived | 4,096 | 1,474,449 | 2.76ms | 11.20ms | 6609.5% | 2.7GiB |
| Concurrency | Async Delay | 32,000 | 2,092,326 | 15.17ms | 18.00ms | 6391.7% | 5.7GiB |
| Efficiency | Latency-10K | 1,024 | 9,982 | 85.8us | 124.0us | 38.6% | 2.1GiB |
| Efficiency | Latency-1M | 1,024 | 998,074 | 133.5us | 263.0us | 3672.5% | 2.5GiB |
| Efficiency | Latency-500K/8 | 1,024 | 325,693 | 3417569.5us | 7956480.0us | 785.6% | 432MiB |
| Workload | JSON Comp | 4,096 | 479,651 | 8.53ms | 27.20ms | 6370.7% | 7.7GiB |
| Workload | JSON Comp | 16,384 | 500,652 | 32.42ms | 77.90ms | 6241.5% | 8.6GiB |
| Workload | JSON TLS | 4,096 | 1,068,482 | 3.82ms | 43.33ms | 6436.1% | 6.7GiB |
| Workload | 8Gbit | 512 | 49,272 | 117.0us | 155.0us | 304.2% | 2.7GiB |
| Workload | Static TLS | 1,024 | 598,441 | 1.71ms | 17.75ms | 6594.5% | 3.3GiB |
| Database | Async DB | 1,024 | 231,411 | 3.93ms | 31.20ms | 5704.7% | 4.3GiB |
| Database | Fortunes | 1,024 | 68,724 | 13.62ms | 20.60ms | 6510.5% | 4.2GiB |
| Gateway | Gateway (H2) | 512 | 291,047 | 55.51ms | 431.63ms | 5245.0% | 4.7GiB |
| Gateway | Gateway (H2) | 1,024 | 268,443 | 107.47ms | 1.29s | 5349.9% | 5.5GiB |
| Gateway | Gateway (H3) | 64 | 90,872 | 22.40ms | 83.61ms | 3326.8% | 3.5GiB |
| Gateway | Gateway (H3) | 256 | 61,410 | 129.62ms | 761.87ms | 2431.9% | 3.7GiB |
| Gateway | Production Stack | 256 | 120,036 | 34.95ms | 130.20ms | 2849.0% | 3.6GiB |
| Gateway | Production Stack | 1,024 | 105,652 | 128.47ms | 3.83s | 2687.2% | 4.1GiB |
| WebSocket | Echo | 512 | 3,717,773 | 137us | 361us | 6413.1% | 2.4GiB |
| WebSocket | Echo | 4,096 | 3,789,107 | 1.08ms | 2.28ms | 6267.6% | 2.4GiB |
| WebSocket | Echo | 16,384 | 3,535,038 | 4.61ms | 9.04ms | 6505.8% | 2.5GiB |
| WebSocket | Echo Pipelined | 512 | 24,200,214 | 337us | 888us | 6684.3% | 2.4GiB |
| WebSocket | Echo Pipelined | 4,096 | 24,689,728 | 2.65ms | 4.73ms | 6490.1% | 2.4GiB |
| WebSocket | Echo Pipelined | 16,384 | 23,267,734 | 11.06ms | 14.80ms | 6271.9% | 2.6GiB |
| WebSocket | Echo Short-lived | 512 | 2,073,493 | 144us | 517us | 5452.8% | 2.4GiB |
| WebSocket | Echo Short-lived | 4,096 | 2,568,006 | 1.06ms | 3.05ms | 6039.3% | 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 | |
|---|---|---|---|
| hyper-express | 4801 | -23% | head to head |
| ultimate-express | 4584 | -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