HttpArena
Frameworks

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.

MedalAwardFieldRank
🥈 SilverWithin its languageJS · HTTP/1.12 of 6
🥈 SilverTest profileGateway · Production Stack2 of 3
🥉 BronzeFamily compositeComposite · Gateway3 of 5
🥉 BronzeTest profileConcurrency · Async Delay3 of 69
🥉 BronzeTest profileGateway · Gateway (H2)3 of 4
🥉 BronzeTest profileGateway · 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.

FamilyRankComposite
HTTP/1.16 of 735798
Gateway3 of 51924
WebSocket7 of 211714

Every result

Alpha Round, 28 runs. Requests per second is the best of three; latency, CPU and memory come from that run.

CategoryProfileConnsReq/secAvgp99CPUMemory
ConnectionBaseline4,0962,204,1161.86ms3.62ms6730.2%4.0GiB
ConnectionPipelined4,09637,648,4181.74ms3.31ms6404.5%3.9GiB
ConnectionShort-lived4,0961,885,6832.15ms8.52ms6534.4%4.0GiB
ConcurrencyAsync Delay32,0001,987,75816.01ms24.90ms6270.4%4.7GiB
EfficiencyLatency-10K1,0249,98177.2us117.0us32.4%3.6GiB
EfficiencyLatency-1M1,024997,623121.5us214.0us3155.9%3.9GiB
EfficiencyLatency-500K/81,024396,3962030071.8us5015552.0us794.2%494MiB
WorkloadJSON Comp4,096147,09027.89ms69.30ms6208.7%8.9GiB
WorkloadJSON Comp16,384129,852123.86ms234.20ms6021.4%11.7GiB
WorkloadJSON TLS4,096844,9304.85ms74.43ms6620.7%4.2GiB
Workload8Gbit51249,336119.4us174.0us321.7%4.1GiB
WorkloadStatic TLS1,02470,91114.41ms38.15ms5950.4%4.4GiB
DatabaseAsync DB1,024193,1854.86ms29.40ms5960.4%4.9GiB
DatabaseFortunes1,02461,66715.42ms29.90ms6540.2%6.1GiB
GatewayGateway (H2)512131,486113.98ms1.14s3672.1%4.6GiB
GatewayGateway (H2)1,024132,017204.29ms3.73s3937.4%6.2GiB
GatewayGateway (H3)6481,33225.05ms87.65ms4101.2%1.6GiB
GatewayGateway (H3)25658,910132.87ms807.76ms3229.8%2.5GiB
GatewayProduction Stack256120,81234.63ms148.25ms2968.9%2.4GiB
GatewayProduction Stack1,024106,517131.70ms4.45s2697.0%3.1GiB
WebSocketEcho5123,382,028150us374us6577.8%3.8GiB
WebSocketEcho4,0963,446,7451.19ms2.44ms6279.3%3.9GiB
WebSocketEcho16,3843,134,4665.16ms9.80ms6161.9%4.1GiB
WebSocketEcho Pipelined5124,301,3581.90ms3.54ms6489.2%3.9GiB
WebSocketEcho Pipelined4,0964,434,00214.74ms18.40ms6350.8%4.0GiB
WebSocketEcho Pipelined16,3844,315,53559.38ms68.70ms6280.0%4.2GiB
WebSocketEcho Short-lived5121,684,460207us777us5886.9%4.3GiB
WebSocketEcho Short-lived4,0962,007,2881.54ms5.65ms6176.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.

EntryCompositevs morojs
fulmine.js6382+10%head to head
hyper-express4751-18%head to head
ultimate-express4537-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