Enso
Engine · Clojure
Minimal Enso engine benchmark with virtual-thread Ring handlers, HTTP/1.1, TLS, HTTP/2, H2C, HTTP/3, static files, and WebSocket echo.
Achievements
🥇 3 Gold. 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 | Within its language | Clojure · HTTP/1.1 | 1 of 9 |
| 🥇 Gold | Within its language | Clojure · HTTP/2 | 1 of 6 |
| 🥇 Gold | Within its language | Clojure · WebSocket | 1 of 8 |
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 | 23 of 41 | 2515 |
| HTTP/2 | 7 of 15 | 811 |
| HTTP/3 | 5 of 7 | 373 |
| WebSocket | 11 of 19 | 1273 |
Every result
Alpha Round, 31 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,428,222 | 2.51ms | 5.54ms | 6473.3% | 13.8GiB |
| Connection | Pipelined | 4,096 | 13,073,491 | 4.33ms | 11.20ms | 6489.2% | 7.6GiB |
| Connection | Short-lived | 4,096 | 832,984 | 1.72ms | 13.60ms | 5537.2% | 4.7GiB |
| Concurrency | Async Delay | 32,000 | 283,998 | 91.18ms | 106.60ms | 5035.9% | 2.1GiB |
| Efficiency | Latency-10K | 1,024 | 9,982 | 87.4us | 117.0us | 66.6% | 459MiB |
| Efficiency | Latency-1M | 1,024 | 997,751 | 241.3us | 1717.0us | 5033.2% | 1.7GiB |
| Efficiency | Latency-500K/8 | 1,024 | 286,008 | 4242849.1us | 8826880.0us | 792.2% | 484MiB |
| Workload | JSON Comp | 4,096 | 50,555 | 57.20ms | 1.84s | 6384.9% | 4.8GiB |
| Workload | JSON Comp | 16,384 | 46,938 | 75.25ms | 2.67s | 6398.2% | 5.0GiB |
| Workload | JSON TLS | 4,096 | 86,570 | 34.25ms | 88.39ms | 6322.3% | 6.5GiB |
| Workload | 8Gbit | 512 | 49,332 | 114.5us | 257.0us | 509.0% | 945MiB |
| Workload | Static TLS | 1,024 | 168,628 | 10.82ms | 283.23ms | 6510.4% | 2.0GiB |
| HTTP/2 | Baseline | 256 | 5,315,631 | 4.87ms | 43.85ms | 6427.8% | 14.0GiB |
| HTTP/2 | Baseline | 1,024 | 5,323,563 | 17.84ms | 127.31ms | 6316.4% | 14.0GiB |
| HTTP/2 | Static | 256 | 147,047 | 45.58ms | 3.22s | 6440.9% | 5.6GiB |
| HTTP/2 | Static | 1,024 | 147,182 | 193.52ms | 4.06s | 6387.2% | 15.6GiB |
| HTTP/2 | Baseline (h2c) | 256 | 4,942,991 | 7.23ms | 308.79ms | 6154.7% | 13.9GiB |
| HTTP/2 | Baseline (h2c) | 1,024 | 5,525,129 | 17.72ms | 146.01ms | 6355.3% | 14.0GiB |
| HTTP/2 | Baseline (h2c) | 4,096 | 4,909,148 | 73.51ms | 524.80ms | 6204.7% | 14.8GiB |
| HTTP/2 | JSON (h2c) | 1,024 | 88,427 | 340.04ms | 1.66s | 6227.9% | 4.8GiB |
| HTTP/2 | JSON (h2c) | 4,096 | 90,527 | 1.06s | 4.64s | 6262.1% | 14.3GiB |
| HTTP/3 | Baseline | 64 | 1,665,424 | 2.12ms | 4.92ms | 6427.4% | 1.3GiB |
| HTTP/3 | Static | 64 | 113,169 | 35.53ms | 369.67ms | 6233.4% | 6.6GiB |
| WebSocket | Echo | 512 | 2,217,091 | 230us | 363us | 6656.5% | 810MiB |
| WebSocket | Echo | 4,096 | 1,933,031 | 1.86ms | 2.59ms | 6446.6% | 1.3GiB |
| WebSocket | Echo | 16,384 | 1,971,852 | 4.25ms | 6.66ms | 6246.9% | 2.1GiB |
| WebSocket | Echo Pipelined | 512 | 29,127,504 | 280us | 443us | 6606.0% | 784MiB |
| WebSocket | Echo Pipelined | 4,096 | 30,330,563 | 1.87ms | 2.73ms | 6444.2% | 2.0GiB |
| WebSocket | Echo Pipelined | 16,384 | 28,190,743 | 3.98ms | 6.05ms | 6197.6% | 5.1GiB |
| WebSocket | Echo Short-lived | 512 | 858,667 | 123us | 331us | 5332.7% | 1.1GiB |
| WebSocket | Echo Short-lived | 4,096 | 857,607 | 128us | 404us | 5315.6% | 1.8GiB |
Compared with
The Clojure entries around Enso on the HTTP/1.1 composite, and the one leading them. The last column shows every profile side by side.
| Entry | Composite | vs Enso | |
|---|---|---|---|
| ring-http-exchange | 3482 | +38% | head to head |
| reitit | 1729 | -31% | head to head |
| ring-jetty9-adapter | 1624 | -35% | head to head |
Compare Enso with any Clojure entry · Compare Enso with any entry, in any language · Every Clojure entry, ranked
Results updated · How the benchmark is run · The machine · Add or fix an entry