araara
Emerging · OCaml · engine: hcs · standard configuration · completeness 3/4
araara: the OCaml 5 web stack on hcs (Eio, io_uring). HCS router, request/response helpers, Plug.Compress for JSON, Plug.Static for files (pre-compressed .br/.gz twins selected per request), hcs gRPC transport with ocaml-protoc codecs, simdjsont JSON, repodb for Postgres. HTTP/1.1, HTTP/2 (TLS and h2c) and WebSocket from one process, one single-domain worker per CPU with SO_REUSEPORT and the runtime's default GC settings.
- Official repository
- Official website
- Benchmark implementation
- All OCaml entries, compared
- Open the leaderboard
Achievements
🥇 7 Gold · 🥈 1 Silver. 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 · HTTP/2 | 1 of 24 |
| 🥇 Gold | Family composite | Composite · gRPC | 1 of 7 |
| 🥇 Gold | Test profile | Efficiency · Latency-10K | 1 of 79 |
| 🥇 Gold | Test profile | HTTP/2 · Baseline | 1 of 24 |
| 🥇 Gold | Test profile | HTTP/2 · Baseline (h2c) | 1 of 19 |
| 🥇 Gold | Test profile | gRPC · Unary | 1 of 7 |
| 🥇 Gold | Test profile | gRPC · Unary TLS | 1 of 7 |
| 🥈 Silver | Test profile | HTTP/2 · Static | 2 of 22 |
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 | 11 of 79 | 5547 |
| HTTP/2 | 1 of 24 | 3297 |
| gRPC | 1 of 7 | 2000 |
| WebSocket | 7 of 25 | 1985 |
Every result
Alpha Round, 34 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,667,853 | 1.53ms | 2.13ms | 6423.5% | 784MiB |
| Connection | Pipelined | 4,096 | 18,076,012 | 3.63ms | 7.16ms | 6176.8% | 900MiB |
| Connection | Short-lived | 4,096 | 2,004,785 | 2.02ms | 29.20ms | 6247.9% | 925MiB |
| Concurrency | Async Delay | 32,000 | 1,302,422 | 24.36ms | 29.90ms | 4401.8% | 2.0GiB |
| Efficiency | Latency-10K | 1,024 | 9,983 | 77.1us | 116.0us | 32.3% | 342MiB |
| Efficiency | Latency-1M | 1,024 | 997,875 | 126.9us | 246.0us | 3531.7% | 694MiB |
| Efficiency | Latency-500K/8 | 1,024 | 353,032 | 2873661.8us | 7092224.0us | 787.4% | 144MiB |
| Workload | JSON Comp | 4,096 | 341,701 | 11.86ms | 187.80ms | 6318.7% | 919MiB |
| Workload | JSON Comp | 16,384 | 346,883 | 43.34ms | 962.60ms | 6152.8% | 1.5GiB |
| Workload | JSON TLS | 4,096 | 750,026 | 5.39ms | 56.00ms | 6381.9% | 975MiB |
| Workload | 8Gbit | 512 | 49,376 | 133.1us | 560.0us | 439.4% | 766MiB |
| Workload | Static TLS | 1,024 | 644,702 | 1.57ms | 31.16ms | 6581.9% | 484MiB |
| Database | Async DB | 1,024 | 91,336 | 10.79ms | 82.40ms | 5931.8% | 457MiB |
| HTTP/2 | Baseline | 256 | 10,790,695 | 2.00ms | 24.98ms | 5426.3% | 725MiB |
| HTTP/2 | Baseline | 1,024 | 10,462,051 | 8.97ms | 89.05ms | 6300.4% | 833MiB |
| HTTP/2 | Static | 256 | 690,512 | 12.30ms | 456.31ms | 6320.7% | 1011MiB |
| HTTP/2 | Static | 1,024 | 680,552 | 44.04ms | 1.15s | 6185.8% | 1.1GiB |
| HTTP/2 | Baseline (h2c) | 256 | 10,400,458 | 2.12ms | 10.96ms | 5049.0% | 685MiB |
| HTTP/2 | Baseline (h2c) | 1,024 | 11,515,976 | 7.88ms | 61.72ms | 6183.8% | 788MiB |
| HTTP/2 | Baseline (h2c) | 4,096 | 10,712,854 | 34.79ms | 115.15ms | 6151.8% | 1.0GiB |
| HTTP/2 | JSON (h2c) | 1,024 | 1,438,479 | 22.09ms | 156.38ms | 6445.3% | 1.8GiB |
| HTTP/2 | JSON (h2c) | 4,096 | 1,449,085 | 87.56ms | 555.78ms | 6446.4% | 3.6GiB |
| gRPC | Unary | 256 | 5,869,206 | 3.92ms | 15.18ms | 4750.1% | 748MiB |
| gRPC | Unary | 1,024 | 6,447,707 | 12.75ms | 101.31ms | 5401.9% | 849MiB |
| gRPC | Unary TLS | 256 | 6,290,556 | 3.36ms | 13.13ms | 4866.4% | 756MiB |
| gRPC | Unary TLS | 1,024 | 6,164,011 | 13.60ms | 89.17ms | 6155.9% | 854MiB |
| WebSocket | Echo | 512 | 3,011,241 | 169us | 346us | 6551.9% | 310MiB |
| WebSocket | Echo | 4,096 | 3,187,127 | 1.28ms | 1.73ms | 6305.8% | 581MiB |
| WebSocket | Echo | 16,384 | 2,546,851 | 6.34ms | 7.57ms | 6274.9% | 1.1GiB |
| WebSocket | Echo Pipelined | 512 | 24,887,232 | 328us | 601us | 6494.0% | 461MiB |
| WebSocket | Echo Pipelined | 4,096 | 25,772,928 | 2.54ms | 3.45ms | 6430.2% | 668MiB |
| WebSocket | Echo Pipelined | 16,384 | 19,520,088 | 13.26ms | 15.40ms | 6294.0% | 1.1GiB |
| WebSocket | Echo Short-lived | 512 | 1,587,862 | 228us | 651us | 6248.2% | 679MiB |
| WebSocket | Echo Short-lived | 4,096 | 1,813,553 | 632us | 1.13ms | 6347.7% | 695MiB |
Compare araara with any entry, in any language · Every OCaml entry, ranked
Results updated · How the benchmark is run · The machine · Add or fix an entry