ktor
Flagship · Kotlin · engine: netty · standard configuration · completeness 4/4
JetBrains Ktor 3.x on Netty with kotlinx.serialization, JDK 25.
Achievements
🥇 1 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 | Kotlin · HTTP/1.1 | 1 of 3 |
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 | 27 of 76 | 3258 |
| HTTP/2 | 16 of 23 | 596 |
| HTTP/3 | 9 of 13 | 464 |
| WebSocket | 18 of 23 | 473 |
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,028,097 | 3.99ms | 8.69ms | 5637.3% | 5.3GiB |
| Connection | Pipelined | 4,096 | 1,651,691 | 39.60ms | 51.20ms | 5065.3% | 8.7GiB |
| Connection | Short-lived | 4,096 | 801,686 | 5.09ms | 51.60ms | 5453.1% | 9.4GiB |
| Concurrency | Async Delay | 32,000 | 217,637 | 144.95ms | 168.60ms | 2140.5% | 6.6GiB |
| Efficiency | Latency-10K | 1,024 | 9,980 | 126.6us | 166.0us | 66.4% | 493MiB |
| Efficiency | Latency-1M | 1,024 | 997,698 | 427.4us | 3313.0us | 5487.1% | 5.4GiB |
| Efficiency | Latency-500K/8 | 1,024 | 230,777 | 5393882.8us | 10612736.0us | 676.6% | 1.3GiB |
| Workload | JSON Comp | 4,096 | 213,497 | 19.11ms | 66.40ms | 6177.3% | 9.1GiB |
| Workload | JSON Comp | 16,384 | 207,586 | 77.81ms | 232.50ms | 6354.6% | 12.1GiB |
| Workload | JSON TLS | 4,096 | 515,694 | 8.19ms | 76.51ms | 4815.7% | 5.5GiB |
| Workload | 8Gbit | 512 | 49,311 | 148.6us | 235.0us | 459.5% | 1.5GiB |
| Workload | Static TLS | 1,024 | 253,342 | 4.58ms | 109.24ms | 6168.4% | 3.8GiB |
| Database | Async DB | 1,024 | 48,250 | 20.90ms | 24.90ms | 2337.6% | 2.6GiB |
| Database | Fortunes | 1,024 | 61,977 | 15.20ms | 28.00ms | 5065.5% | 10.8GiB |
| HTTP/2 | Baseline | 256 | 793,994 | 31.97ms | 153.52ms | 6482.2% | 13.6GiB |
| HTTP/2 | Baseline | 1,024 | 790,078 | 124.40ms | 338.54ms | 6014.8% | 24.5GiB |
| HTTP/2 | Static | 256 | 218,306 | 37.08ms | 185.59ms | 5966.4% | 7.0GiB |
| HTTP/2 | Static | 1,024 | 197,962 | 159.49ms | 659.25ms | 5963.9% | 12.2GiB |
| HTTP/2 | Baseline (h2c) | 256 | 815,580 | 31.28ms | 124.13ms | 6493.9% | 11.7GiB |
| HTTP/2 | Baseline (h2c) | 1,024 | 737,088 | 138.39ms | 636.47ms | 6407.3% | 25.1GiB |
| HTTP/2 | Baseline (h2c) | 4,096 | 487,096 | 743.76ms | 2.22s | 5692.8% | 31.2GiB |
| HTTP/2 | JSON (h2c) | 1,024 | 407,610 | 77.51ms | 438.85ms | 4978.0% | 11.4GiB |
| HTTP/2 | JSON (h2c) | 4,096 | 414,514 | 292.72ms | 805.69ms | 5103.6% | 17.1GiB |
| HTTP/3 | Baseline | 64 | 340,632 | 12.69ms | 53.45ms | 4394.1% | 4.9GiB |
| HTTP/3 | Static | 64 | 105,632 | 34.70ms | 122.12ms | 6378.0% | 3.3GiB |
| WebSocket | Echo | 512 | 1,063,564 | 480us | 1.03ms | 3422.0% | 2.7GiB |
| WebSocket | Echo | 4,096 | 999,265 | 4.05ms | 9.32ms | 3424.3% | 2.8GiB |
| WebSocket | Echo | 16,384 | 680,770 | 23.45ms | 46.50ms | 3267.8% | 4.2GiB |
| WebSocket | Echo Pipelined | 512 | 11,784,745 | 694us | 1.82ms | 3371.8% | 8.6GiB |
| WebSocket | Echo Pipelined | 4,096 | 11,399,152 | 5.74ms | 13.70ms | 3414.2% | 7.8GiB |
| WebSocket | Echo Pipelined | 16,384 | 9,035,670 | 28.25ms | 97.20ms | 3318.0% | 8.9GiB |
Compared with
The Kotlin entries around ktor on the HTTP/1.1 composite, and the one leading them. The last column shows every profile side by side.
| Entry | Composite | vs ktor | |
|---|---|---|---|
| ktor-tuned | 4003 | +23% | head to head |
| neton | 2408 | -26% | head to head |
| http4k | 1855 | -43% | head to head |
Compare ktor with any Kotlin entry · Compare ktor with any entry, in any language · Every Kotlin entry, ranked
Results updated · How the benchmark is run · The machine · Add or fix an entry