ktron
Experimental · Kotlin · engine: io_uring · standard configuration · completeness 4/4
Ktron — a Kotlin web framework on the Kotlin port of the ioxide io_uring runtime. One reactor per core, each owning its ring and its share of the SO_REUSEPORT listeners; multishot accept and recv into provided buffer rings, with the syscalls made straight through the Foreign Function & Memory API. Requests are parsed by Glyph11, the hardened HTTP/1.1 parser, and routed by a segment trie whose parameters are offsets into the request. Middleware are ordered before/after hooks that can short-circuit; handlers are plain functions, or suspend functions the reactor resumes inline on its own thread, with no dispatcher and no thread pool. JSON is serialized by Ghost's generated serializers straight into the connection's buffer, and compressed by the framework's gzip/brotli middleware. TLS on :8081 is the BoringSSL ioxide bundles over FFM, with kernel TX offload. The async profile's wait is an IORING_OP_TIMEOUT on the reactor's ring.
Achievements
🥇 3 Gold · 🥈 3 Silver · 🥉 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 |
| 🥇 Gold | Test profile | Efficiency · Latency-10K | 1 of 17 |
| 🥇 Gold | Test profile | Workload · 8Gbit | 1 of 17 |
| 🥈 Silver | Family composite | Composite · HTTP/1.1 | 2 of 19 |
| 🥈 Silver | Test profile | Concurrency · Async Delay | 2 of 17 |
| 🥈 Silver | Test profile | Connection · Baseline | 2 of 19 |
| 🥉 Bronze | Test profile | Connection · Short-lived | 3 of 19 |
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 | 2 of 19 | 7557 |
Every result
Alpha Round, 10 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 | 4,097,278 | 999us | 1.52ms | 5995.0% | 1.5GiB |
| Connection | Pipelined | 4,096 | 48,750,153 | 1.34ms | 2.04ms | 6269.8% | 1.5GiB |
| Connection | Short-lived | 4,096 | 2,726,272 | 1.37ms | 2.12ms | 5525.3% | 1.8GiB |
| Concurrency | Async Delay | 32,000 | 2,773,960 | 11.46ms | 14.30ms | 6227.1% | 2.8GiB |
| Efficiency | Latency-10K | 1,024 | 9,983 | 68.1us | 101.0us | 22.4% | 1.4GiB |
| Efficiency | Latency-1M | 1,024 | 997,522 | 97.5us | 170.0us | 2125.5% | 1.4GiB |
| Workload | JSON Comp | 4,096 | 832,236 | 4.90ms | 11.70ms | 6372.7% | 2.0GiB |
| Workload | JSON Comp | 16,384 | 808,502 | 20.15ms | 36.40ms | 6231.4% | 2.9GiB |
| Workload | JSON TLS | 4,096 | 1,542,950 | 2.61ms | 60.71ms | 6174.4% | 1.7GiB |
| Workload | 8Gbit | 512 | 49,459 | 90.2us | 116.0us | 216.5% | 3.4GiB |
Compared with
The Kotlin entries around ktron on the HTTP/1.1 composite, and the one leading them. The last column shows every profile side by side.
| Entry | Composite | vs ktron | |
|---|---|---|---|
| edixoi-kt | 6803 | -10% | head to head |
| kron | 6443 | -15% | head to head |
Compare ktron with any Kotlin entry · Compare ktron with any entry, in any language · Every Kotlin entry, ranked
Results updated · How the benchmark is run · The machine · Add or fix an entry