ktor-ghost
Flagship · Kotlin · engine: netty · tuned configuration · completeness 4/4
JetBrains Ktor 3.x on Netty with Kotlin coroutines, Ghost Serializer, JDK 21.
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 | 40 of 93 | 2835 |
| HTTP/2 | 20 of 28 | 499 |
| WebSocket | 17 of 25 | 455 |
Every result
Alpha Round, 29 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 | 838,039 | 4.90ms | 9.60ms | 6201.7% | 4.9GiB |
| Connection | Pipelined | 4,096 | 654,297 | 99.47ms | 146.90ms | 4849.5% | 9.5GiB |
| Connection | Short-lived | 4,096 | 655,894 | 6.20ms | 54.10ms | 6025.3% | 4.9GiB |
| Concurrency | Async Delay | 32,000 | 224,114 | 141.02ms | 225.40ms | 2514.0% | 16.9GiB |
| Efficiency | Latency-10K | 1,024 | 9,981 | 138.8us | 183.0us | 95.2% | 492MiB |
| Efficiency | Latency-1M | 1,024 | 866,759 | 1709795.5us | 2929664.0us | 5936.0% | 5.1GiB |
| Efficiency | Latency-500K/8 | 1,024 | 205,267 | 5921873.3us | 11628544.0us | 699.7% | 1.3GiB |
| Workload | JSON Comp | 4,096 | 217,405 | 18.85ms | 42.30ms | 6244.1% | 4.5GiB |
| Workload | JSON Comp | 16,384 | 218,199 | 74.08ms | 145.20ms | 6022.6% | 11.4GiB |
| Workload | JSON TLS | 4,096 | 607,943 | 8.03ms | 266.87ms | 6059.8% | 6.0GiB |
| Workload | 8Gbit | 512 | 49,249 | 195.9us | 295.0us | 694.6% | 2.9GiB |
| Workload | Static TLS | 1,024 | 191,799 | 8.84ms | 183.27ms | 6430.3% | 3.3GiB |
| Database | Async DB | 1,024 | 113,590 | 8.61ms | 11.20ms | 5318.7% | 12.2GiB |
| Database | Fortunes | 1,024 | 49,991 | 19.90ms | 43.10ms | 5612.1% | 11.9GiB |
| HTTP/2 | Baseline | 256 | 515,664 | 46.06ms | 282.20ms | 5757.4% | 31.1GiB |
| HTTP/2 | Baseline | 1,024 | 495,732 | 193.95ms | 768.20ms | 5862.3% | 30.1GiB |
| HTTP/2 | Static | 256 | 196,780 | 40.90ms | 299.14ms | 5881.4% | 23.3GiB |
| HTTP/2 | Static | 1,024 | 184,792 | 170.18ms | 530.61ms | 5720.6% | 24.2GiB |
| HTTP/2 | Baseline (h2c) | 256 | 391,103 | 54.35ms | 359.42ms | 5639.1% | 30.4GiB |
| HTTP/2 | Baseline (h2c) | 1,024 | 362,388 | 291.47ms | 1.95s | 5652.8% | 30.9GiB |
| HTTP/2 | Baseline (h2c) | 4,096 | 392,445 | 868.48ms | 2.26s | 5584.7% | 31.4GiB |
| HTTP/2 | JSON (h2c) | 1,024 | 424,461 | 71.66ms | 319.32ms | 5873.4% | 29.4GiB |
| HTTP/2 | JSON (h2c) | 4,096 | 389,919 | 304.94ms | 1.05s | 5765.4% | 29.5GiB |
| WebSocket | Echo | 512 | 1,021,563 | 500us | 1.33ms | 3426.9% | 2.5GiB |
| WebSocket | Echo | 4,096 | 973,072 | 4.16ms | 9.46ms | 3435.1% | 3.4GiB |
| WebSocket | Echo | 16,384 | 676,216 | 23.65ms | 42.90ms | 3283.8% | 15.7GiB |
| WebSocket | Echo Pipelined | 512 | 11,253,401 | 727us | 1.93ms | 3375.7% | 9.8GiB |
| WebSocket | Echo Pipelined | 4,096 | 11,090,871 | 5.89ms | 14.40ms | 3425.7% | 13.7GiB |
| WebSocket | Echo Pipelined | 16,384 | 8,286,836 | 30.72ms | 69.70ms | 3335.9% | 20.9GiB |
Compared with
The Kotlin entries around ktor-ghost on the HTTP/1.1 composite, and the one leading them. The last column shows every profile side by side.
| Entry | Composite | vs ktor-ghost | |
|---|---|---|---|
| ktor | 2590 | -9% | head to head |
| http4k | 1901 | -33% | head to head |
Compare ktor-ghost with any Kotlin entry · Compare ktor-ghost with any entry, in any language · Every Kotlin entry, ranked
Results updated · How the benchmark is run · The machine · Add or fix an entry