ktor-tuned
Flagship · Kotlin · engine: netty · tuned configuration · completeness 4/4
JetBrains Ktor 3.x on Netty with Ghost Serializer, JDK 25.
Achievements
🥇 2 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 4 |
| 🥇 Gold | Within its language | Kotlin · HTTP/2 | 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 | 23 of 95 | 3916 |
| HTTP/2 | 15 of 29 | 800 |
| HTTP/3 | 9 of 14 | 445 |
| WebSocket | 18 of 26 | 517 |
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,421,507 | 2.88ms | 10.50ms | 6370.5% | 6.5GiB |
| Connection | Pipelined | 4,096 | 2,519,187 | 26.06ms | 86.30ms | 6181.5% | 8.5GiB |
| Connection | Short-lived | 4,096 | 551,081 | 7.36ms | 73.00ms | 4851.3% | 10.0GiB |
| Concurrency | Async Delay | 32,000 | 326,652 | 97.11ms | 283.80ms | 2360.0% | 7.7GiB |
| Efficiency | Latency-10K | 1,024 | 9,981 | 95.5us | 135.0us | 44.3% | 1.5GiB |
| Efficiency | Latency-1M | 1,024 | 998,014 | 294.1us | 2777.0us | 5825.4% | 5.0GiB |
| Efficiency | Latency-500K/8 | 1,024 | 266,303 | 4667336.1us | 9539584.0us | 799.6% | 2.4GiB |
| Workload | JSON Comp | 4,096 | 248,285 | 16.48ms | 53.00ms | 6497.1% | 6.9GiB |
| Workload | JSON Comp | 16,384 | 216,824 | 74.56ms | 225.80ms | 6074.0% | 11.9GiB |
| Workload | JSON TLS | 4,096 | 824,856 | 7.28ms | 396.45ms | 6329.3% | 8.8GiB |
| Workload | 8Gbit | 512 | 49,240 | 138.2us | 176.0us | 349.6% | 1.7GiB |
| Workload | Static TLS | 1,024 | 253,462 | 4.58ms | 156.24ms | 6306.7% | 4.1GiB |
| Database | Async DB | 1,024 | 49,777 | 20.32ms | 24.10ms | 2172.2% | 2.8GiB |
| Database | Fortunes | 1,024 | 49,991 | 19.90ms | 43.10ms | 5612.1% | 11.9GiB |
| HTTP/2 | Baseline | 256 | 1,110,873 | 23.58ms | 154.19ms | 6289.6% | 11.4GiB |
| HTTP/2 | Baseline | 1,024 | 1,016,824 | 96.13ms | 380.08ms | 6318.4% | 25.4GiB |
| HTTP/2 | Static | 256 | 230,141 | 35.23ms | 126.19ms | 6138.9% | 9.8GiB |
| HTTP/2 | Static | 1,024 | 222,669 | 143.91ms | 449.69ms | 6092.1% | 11.8GiB |
| HTTP/2 | Baseline (h2c) | 256 | 1,142,982 | 22.88ms | 114.96ms | 6343.0% | 12.1GiB |
| HTTP/2 | Baseline (h2c) | 1,024 | 1,079,114 | 91.51ms | 332.67ms | 6358.4% | 26.1GiB |
| HTTP/2 | Baseline (h2c) | 4,096 | 507,299 | 666.60ms | 2.07s | 5375.7% | 31.3GiB |
| HTTP/2 | JSON (h2c) | 1,024 | 704,528 | 45.35ms | 169.29ms | 6240.1% | 11.2GiB |
| HTTP/2 | JSON (h2c) | 4,096 | 656,840 | 189.69ms | 664.75ms | 6160.5% | 26.3GiB |
| HTTP/3 | Baseline | 64 | 380,700 | 10.37ms | 28.22ms | 3157.8% | 4.8GiB |
| HTTP/3 | Static | 64 | 96,694 | 37.82ms | 256.51ms | 3699.3% | 2.9GiB |
| WebSocket | Echo | 512 | 996,670 | 513us | 1.24ms | 6454.9% | 2.6GiB |
| WebSocket | Echo | 4,096 | 1,128,116 | 3.62ms | 10.30ms | 6422.4% | 3.0GiB |
| WebSocket | Echo | 16,384 | 861,762 | 18.38ms | 56.60ms | 6208.8% | 5.6GiB |
| WebSocket | Echo Pipelined | 512 | 11,369,504 | 719us | 1.72ms | 6186.0% | 4.9GiB |
| WebSocket | Echo Pipelined | 4,096 | 12,583,931 | 5.17ms | 16.40ms | 6266.5% | 4.9GiB |
| WebSocket | Echo Pipelined | 16,384 | 11,470,472 | 21.61ms | 73.10ms | 6557.1% | 8.3GiB |
Compared with
The Kotlin entries around ktor-tuned on the HTTP/1.1 composite, and the one leading them. The last column shows every profile side by side.
| Entry | Composite | vs ktor-tuned | |
|---|---|---|---|
| ktor | 2976 | -24% | head to head |
| neton | 2166 | -45% | head to head |
Compare ktor-tuned with any Kotlin entry · Compare ktor-tuned with any entry, in any language · Every Kotlin entry, ranked
Results updated · How the benchmark is run · The machine · Add or fix an entry