Clojure web framework comparison: any two, head to head
ring-http-exchange is quicker than aleph on 12 of the 22 profiles they both run, and behind on 10. On the HTTP/1.1 composite they score 468 and 400.
Pick any two of the 5 Clojure entries. Requests per second is the best of three runs and the delta is the first column against the second; every row is the same profile at the same connection count, on the same machine. What each profile measures.
| Profile | Conns | ring-http-exchange req/sec | aleph req/sec | Delta | ring-http-exchange p99 | aleph p99 |
|---|---|---|---|---|---|---|
| Baseline | 512 | 1,209,922 | 1,289,242 | -6% | 1.05ms | 6.20ms |
| Baseline | 4,096 | 1,176,734 | 1,301,437 | -10% | 13.00ms | 10.70ms |
| Short-lived | 512 | 838,837 | 504,957 | +66% | 5.42ms | 9.06ms |
| Short-lived | 4,096 | 833,565 | 499,758 | +67% | 51.40ms | 21.90ms |
| JSON | 4,096 | 436,681 | 555,616 | -21% | 47.90ms | 46.90ms |
| JSON Comp | 512 | 18,832 | 224,883 | -92% | 42.10ms | 31.70ms |
| JSON Comp | 4,096 | 139,354 | 235,423 | -41% | 56.90ms | 109.40ms |
| JSON Comp | 16,384 | 224,270 | 233,388 | -4% | 924.60ms | 177.10ms |
| JSON TLS | 4,096 | 445,438 | 611,167 | -27% | 81.81ms | 520.06ms |
| Upload | 32 | 2,671 | 680 | +293% | 34.10ms | 171.70ms |
| Upload | 256 | 2,894 | 575 | +403% | 324.30ms | 2.25s |
| Static | 1,024 | 224,733 | 23,087 | +873% | 204.21ms | 360.02ms |
| Static | 4,096 | 238,259 | 22,685 | +950% | 1.68s | 783.55ms |
| Static | 6,800 | 220,929 | 22,288 | +891% | 2.00s | 1.46s |
| Static TLS | 1,024 | 190,477 | 92,285 | +106% | 219.74ms | 269.99ms |
| Static TLS | 4,096 | 192,014 | 84,868 | +126% | 1.97s | 481.36ms |
| Static TLS | 6,800 | 184,649 | 81,174 | +127% | 1.10s | 509.81ms |
| Async DB | 1,024 | 111,475 | 112,158 | -1% | 14.00ms | 14.10ms |
| CRUD | 4,096 | 216,626 | 207,049 | +5% | 37.10ms | 38.70ms |
| Fortunes | 1,024 | 80,064 | 41,497 | +93% | 20.70ms | 42.70ms |
| API-4 | 256 | 21,278 | 24,142 | -12% | 34.10ms | 43.50ms |
| API-16 | 1,024 | 76,344 | 79,305 | -4% | 45.90ms | 60.60ms |
Common comparisons
ring-http-exchange vs aleph · ring-http-exchange vs ring · ring-http-exchange vs ring-jetty9-adapter · aleph vs ring · aleph vs ring-jetty9-adapter · ring vs ring-jetty9-adapter
Questions
Is ring-http-exchange faster than aleph?
ring-http-exchange is quicker than aleph on 12 of the 22 profiles they both run, and behind on 10. On the HTTP/1.1 composite they score 468 and 400. Both run on the same machine, in the same round, against the same profiles.
Is ring-http-exchange faster than ring?
ring-http-exchange is quicker than ring on 14 of the 15 profiles they both run, and behind on 1. On the HTTP/1.1 composite they score 468 and 192. Both run on the same machine, in the same round, against the same profiles.
Is ring-http-exchange faster than ring-jetty9-adapter?
ring-http-exchange is quicker than ring-jetty9-adapter on 13 of the 14 profiles they both run, and behind on 1. On the HTTP/1.1 composite they score 468 and 179. Both run on the same machine, in the same round, against the same profiles.
Is aleph faster than ring?
aleph is quicker than ring on 8 of the 15 profiles they both run, and behind on 7. On the HTTP/1.1 composite they score 400 and 192. Both run on the same machine, in the same round, against the same profiles.
Which Clojure framework is fastest overall?
ring-http-exchange holds the highest HTTP/1.1 composite of the Clojure entries, at 468. The composite is throughput over the whole suite; if a service is one shape of workload, compare that profile on its own in the table above, because the order changes.
Every Clojure entry
Results updated · Clojure composite ranking · Other languages · Open the leaderboard