ktor
Flagship · Kotlin · engine: netty · standard configuration · completeness 4/4
JetBrains Ktor 3.x on Netty with kotlinx.serialization, JDK 25.
Achievements
🥇 1 Gold · 🥉 1 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.
| Medal | Award | Field | Rank |
|---|---|---|---|
| 🥇 Gold | Within its language | Kotlin · HTTP/1.1 | 1 of 3 |
| 🥉 Bronze | Test profile | Efficiency · Latency-10K | 3 of 72 |
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 | 31 of 72 | 2965 |
| HTTP/2 | 15 of 20 | 546 |
| HTTP/3 | 7 of 11 | 435 |
| WebSocket | 15 of 20 | 449 |
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 | 958,064 | 4.29ms | 9.25ms | 5999.3% | 6.2GiB |
| Connection | Pipelined | 4,096 | 2,223,872 | 29.48ms | 40.50ms | 5409.5% | 7.2GiB |
| Connection | Short-lived | 4,096 | 705,889 | 5.79ms | 53.70ms | 5811.2% | 5.1GiB |
| Concurrency | Async Delay | 32,000 | 207,601 | 151.80ms | 198.10ms | 2246.4% | 6.7GiB |
| Efficiency | Latency-10K | 1,024 | 9,983 | 112.8us | 147.0us | 71.2% | 1.5GiB |
| Efficiency | Latency-1M | 1,024 | 997,500 | 1161.6us | 13756.0us | 5643.6% | 4.9GiB |
| Efficiency | Latency-500K/8 | 1,024 | 211,429 | 5767009.3us | 11382784.0us | 681.2% | 1.3GiB |
| Workload | JSON Comp | 4,096 | 204,299 | 20.04ms | 78.90ms | 6329.5% | 5.2GiB |
| Workload | JSON Comp | 16,384 | 205,282 | 78.49ms | 257.90ms | 6333.4% | 11.7GiB |
| Workload | JSON TLS | 4,096 | 456,229 | 10.90ms | 293.41ms | 4744.9% | 5.7GiB |
| Workload | 8Gbit | 512 | 49,330 | 185.3us | 273.0us | 541.0% | 1.6GiB |
| Workload | Static TLS | 1,024 | 245,059 | 4.73ms | 95.47ms | 6098.3% | 4.9GiB |
| Database | Async DB | 1,024 | 50,138 | 20.18ms | 24.10ms | 2451.8% | 2.8GiB |
| Database | Fortunes | 1,024 | 60,733 | 15.92ms | 30.70ms | 5100.3% | 7.3GiB |
| HTTP/2 | Baseline | 256 | 770,207 | 32.76ms | 121.76ms | 6335.0% | 9.6GiB |
| HTTP/2 | Baseline | 1,024 | 727,073 | 135.69ms | 416.32ms | 6316.1% | 25.2GiB |
| HTTP/2 | Static | 256 | 209,566 | 38.56ms | 238.51ms | 6003.8% | 9.0GiB |
| HTTP/2 | Static | 1,024 | 131,179 | 230.21ms | 833.40ms | 5765.5% | 9.7GiB |
| HTTP/2 | Baseline (h2c) | 256 | 811,874 | 31.26ms | 123.08ms | 6449.1% | 9.1GiB |
| HTTP/2 | Baseline (h2c) | 1,024 | 726,624 | 140.79ms | 649.80ms | 6456.0% | 25.4GiB |
| HTTP/2 | Baseline (h2c) | 4,096 | 509,387 | 696.84ms | 1.81s | 5872.5% | 31.3GiB |
| HTTP/2 | JSON (h2c) | 1,024 | 431,461 | 73.28ms | 421.12ms | 5283.8% | 12.6GiB |
| HTTP/2 | JSON (h2c) | 4,096 | 374,581 | 324.53ms | 755.42ms | 4905.8% | 27.2GiB |
| HTTP/3 | Baseline | 64 | 340,607 | 11.13ms | 28.01ms | 4809.1% | 4.8GiB |
| HTTP/3 | Static | 64 | 97,362 | 36.87ms | 266.09ms | 5403.6% | 2.8GiB |
| WebSocket | Echo | 512 | 1,009,467 | 506us | 1.19ms | 3436.7% | 2.7GiB |
| WebSocket | Echo | 4,096 | 968,694 | 4.20ms | 9.80ms | 3406.8% | 2.0GiB |
| WebSocket | Echo | 16,384 | 621,301 | 25.64ms | 53.20ms | 3363.8% | 6.4GiB |
| WebSocket | Echo Pipelined | 512 | 11,369,170 | 719us | 2.12ms | 3353.5% | 5.7GiB |
| WebSocket | Echo Pipelined | 4,096 | 10,895,483 | 5.99ms | 14.80ms | 3370.0% | 7.3GiB |
| WebSocket | Echo Pipelined | 16,384 | 8,358,151 | 30.57ms | 67.50ms | 3273.0% | 8.0GiB |
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 | 3899 | +31% | head to head |
| neton | 2443 | -18% | head to head |
| http4k | 1875 | -37% | 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