morojs
Emerging · JS · engine: @morojs/engine · standard configuration · completeness 4/4
MoroJS 1.8 on its native HTTP engine (@morojs/engine), default configuration, clustered by the framework itself with one worker thread per core sharing the port through SO_REUSEPORT. Routing, path and query parameters and body parsing through the Moro request, JSON through res.json, compression, static files and the cache-aside through the built-in middleware and cache adapters, WebSockets through the engine's own RFC 6455 support.
Achievements
🥈 2 Silver · 🥉 4 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 |
|---|---|---|---|
| 🥈 Silver | Within its language | JS · HTTP/1.1 | 2 of 6 |
| 🥈 Silver | Test profile | Gateway · Production Stack | 2 of 3 |
| 🥉 Bronze | Family composite | Composite · Gateway | 3 of 5 |
| 🥉 Bronze | Test profile | Concurrency · Async Delay | 3 of 69 |
| 🥉 Bronze | Test profile | Gateway · Gateway (H2) | 3 of 4 |
| 🥉 Bronze | Test profile | Gateway · Gateway (H3) | 3 of 4 |
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 | 6 of 73 | 5798 |
| Gateway | 3 of 5 | 1924 |
| WebSocket | 7 of 21 | 1714 |
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 | 2,204,116 | 1.86ms | 3.62ms | 6730.2% | 4.0GiB |
| Connection | Pipelined | 4,096 | 37,648,418 | 1.74ms | 3.31ms | 6404.5% | 3.9GiB |
| Connection | Short-lived | 4,096 | 1,885,683 | 2.15ms | 8.52ms | 6534.4% | 4.0GiB |
| Concurrency | Async Delay | 32,000 | 1,987,758 | 16.01ms | 24.90ms | 6270.4% | 4.7GiB |
| Efficiency | Latency-10K | 1,024 | 9,981 | 77.2us | 117.0us | 32.4% | 3.6GiB |
| Efficiency | Latency-1M | 1,024 | 997,623 | 121.5us | 214.0us | 3155.9% | 3.9GiB |
| Efficiency | Latency-500K/8 | 1,024 | 396,396 | 2030071.8us | 5015552.0us | 794.2% | 494MiB |
| Workload | JSON Comp | 4,096 | 147,090 | 27.89ms | 69.30ms | 6208.7% | 8.9GiB |
| Workload | JSON Comp | 16,384 | 129,852 | 123.86ms | 234.20ms | 6021.4% | 11.7GiB |
| Workload | JSON TLS | 4,096 | 844,930 | 4.85ms | 74.43ms | 6620.7% | 4.2GiB |
| Workload | 8Gbit | 512 | 49,336 | 119.4us | 174.0us | 321.7% | 4.1GiB |
| Workload | Static TLS | 1,024 | 70,911 | 14.41ms | 38.15ms | 5950.4% | 4.4GiB |
| Database | Async DB | 1,024 | 193,185 | 4.86ms | 29.40ms | 5960.4% | 4.9GiB |
| Database | Fortunes | 1,024 | 61,667 | 15.42ms | 29.90ms | 6540.2% | 6.1GiB |
| Gateway | Gateway (H2) | 512 | 131,486 | 113.98ms | 1.14s | 3672.1% | 4.6GiB |
| Gateway | Gateway (H2) | 1,024 | 132,017 | 204.29ms | 3.73s | 3937.4% | 6.2GiB |
| Gateway | Gateway (H3) | 64 | 81,332 | 25.05ms | 87.65ms | 4101.2% | 1.6GiB |
| Gateway | Gateway (H3) | 256 | 58,910 | 132.87ms | 807.76ms | 3229.8% | 2.5GiB |
| Gateway | Production Stack | 256 | 120,812 | 34.63ms | 148.25ms | 2968.9% | 2.4GiB |
| Gateway | Production Stack | 1,024 | 106,517 | 131.70ms | 4.45s | 2697.0% | 3.1GiB |
| WebSocket | Echo | 512 | 3,382,028 | 150us | 374us | 6577.8% | 3.8GiB |
| WebSocket | Echo | 4,096 | 3,446,745 | 1.19ms | 2.44ms | 6279.3% | 3.9GiB |
| WebSocket | Echo | 16,384 | 3,134,466 | 5.16ms | 9.80ms | 6161.9% | 4.1GiB |
| WebSocket | Echo Pipelined | 512 | 4,301,358 | 1.90ms | 3.54ms | 6489.2% | 3.9GiB |
| WebSocket | Echo Pipelined | 4,096 | 4,434,002 | 14.74ms | 18.40ms | 6350.8% | 4.0GiB |
| WebSocket | Echo Pipelined | 16,384 | 4,315,535 | 59.38ms | 68.70ms | 6280.0% | 4.2GiB |
| WebSocket | Echo Short-lived | 512 | 1,684,460 | 207us | 777us | 5886.9% | 4.3GiB |
| WebSocket | Echo Short-lived | 4,096 | 2,007,288 | 1.54ms | 5.65ms | 6176.0% | 5.1GiB |
Compared with
The JS entries around morojs on the HTTP/1.1 composite, and the one leading them. The last column shows every profile side by side.
| Entry | Composite | vs morojs | |
|---|---|---|---|
| fulmine.js | 6382 | +10% | head to head |
| hyper-express | 4751 | -18% | head to head |
| ultimate-express | 4537 | -22% | head to head |
Compare morojs with any JS entry · Compare morojs with any entry, in any language · Every JS entry, ranked
Results updated · How the benchmark is run · The machine · Add or fix an entry