genhttp-kt
Experimental · Kotlin · standard configuration · completeness 4/4
Kotlin port of the GenHTTP web server on JDK 25, running on its own HTTP/1.1 engine (NIO channels, a coroutine per connection on virtual threads, TLS via the JDK SSLEngine). Implemented with web services and a layout router, JSON via Jackson, Postgres via HikariCP and JDBC.
- Official repository
- Official website
- Benchmark implementation
- All Kotlin entries, compared
- Open the leaderboard
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 | 13 of 19 | 3783 |
| WebSocket | 13 of 14 | 1346 |
Every result
Alpha Round, 21 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,955,300 | 1.94ms | 3.47ms | 6678.2% | 1.5GiB |
| Connection | Pipelined | 4,096 | 16,527,270 | 3.69ms | 8.59ms | 6175.1% | 3.6GiB |
| Connection | Short-lived | 4,096 | 825,302 | 2.71ms | 26.10ms | 4839.6% | 922MiB |
| Concurrency | Async Delay | 32,000 | 1,303,527 | 20.32ms | 63.90ms | 5833.5% | 4.7GiB |
| Efficiency | Latency-10K | 1,024 | 9,980 | 93.1us | 117.0us | 65.1% | 308MiB |
| Efficiency | Latency-1M | 1,024 | 997,452 | 212.5us | 1244.0us | 4998.7% | 1.0GiB |
| Efficiency | Latency-500K/8 | 1,024 | 363,004 | 1680907.8us | 3214336.0us | 786.7% | 888MiB |
| Workload | JSON Comp | 4,096 | 508,617 | 7.96ms | 31.00ms | 6207.2% | 3.2GiB |
| Workload | JSON Comp | 16,384 | 502,332 | 26.18ms | 87.10ms | 6055.5% | 6.1GiB |
| Workload | JSON TLS | 4,096 | 755,821 | 5.43ms | 675.92ms | 6382.3% | 4.0GiB |
| Workload | 8Gbit | 512 | 49,313 | 116.7us | 149.0us | 492.4% | 1.1GiB |
| Workload | Static TLS | 1,024 | 286,311 | 11.36ms | 157.22ms | 5066.7% | 1.3GiB |
| Database | Async DB | 1,024 | 72,478 | 13.60ms | 127.90ms | 6494.4% | 2.1GiB |
| WebSocket | Echo | 512 | 2,412,394 | 211us | 379us | 6720.5% | 927MiB |
| WebSocket | Echo | 4,096 | 2,154,156 | 1.73ms | 3.10ms | 6559.5% | 2.6GiB |
| WebSocket | Echo | 16,384 | 2,018,104 | 5.68ms | 10.70ms | 6135.3% | 4.2GiB |
| WebSocket | Echo Pipelined | 512 | 33,546,038 | 243us | 433us | 6236.1% | 3.3GiB |
| WebSocket | Echo Pipelined | 4,096 | 31,325,260 | 1.92ms | 3.57ms | 6155.7% | 6.7GiB |
| WebSocket | Echo Pipelined | 16,384 | 27,568,778 | 6.32ms | 19.30ms | 6032.2% | 8.2GiB |
| WebSocket | Echo Short-lived | 512 | 810,368 | 127us | 380us | 5087.8% | 1.5GiB |
| WebSocket | Echo Short-lived | 4,096 | 820,470 | 124us | 380us | 4883.6% | 1.2GiB |
Compared with
The Kotlin entries around genhttp-kt on the HTTP/1.1 composite, and the one leading them. The last column shows every profile side by side.
| Entry | Composite | vs genhttp-kt | |
|---|---|---|---|
| ktron | 7557 | +100% | head to head |
| genhttp-kt-netty | 5539 | +46% | head to head |
| ktor-tuned | 3879 | +3% | head to head |
| ktor | 3175 | -16% | head to head |
| neton | 2353 | -38% | head to head |
Compare genhttp-kt with any Kotlin entry · Compare genhttp-kt with any entry, in any language · Every Kotlin entry, ranked
Results updated · How the benchmark is run · The machine · Add or fix an entry