HttpArena
Frameworks

ktor-kronos-native

Experimental · Kotlin · engine: io_uring · standard configuration · completeness 4/4

ktor-kronos-native, JetBrains Ktor on Kotlin/Native with the kron engine (ktor-server-kron, in the MDA2AV/ktor fork) instead of CIO: one native binary, no JVM; the ktor-kronos entry runs the same routes on the JVM. kron is the Kotlin port of the ioxide io_uring runtime: one reactor per core, each pinned to its CPU and owning its ring and its share of the SO_REUSEPORT listeners; multishot accept and recv into provided buffer rings, driven from Kotlin over the kernel's own io_uring header (no liburing). Requests are parsed by Glyph11, the hardened HTTP/1.1 parser, and run through Ktor's own pipeline - routing, plugins, call.receive and call.respond - on the reactor that accepted the connection, with no thread pool in between. Responses to pipelined requests leave in one send. delay() is an IORING_OP_TIMEOUT on the reactor's ring. The routes are the ktor entry's, answered the same way: JSON through Ktor's ContentNegotiation with kotlinx.serialization, and Ktor's own WebSockets; json-comp is left out, as Ktor's Compression plugin is JVM-only. TLS on :8081 is the engine's own connector on kron's BoringSSL. The engine passes Ktor's own engine suites (HttpServerCommonTestSuite, WebSocketEngineSuite).

Achievements

🥈 1 Silver. 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.

MedalAwardFieldRank
🥈 SilverTest profileEfficiency · Latency-1M2 of 20

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.

FamilyRankComposite
HTTP/1.118 of 222758
WebSocket16 of 16212

Every result

Alpha Round, 14 runs. Requests per second is the best of three; latency, CPU and memory come from that run.

CategoryProfileConnsReq/secAvgp99CPUMemory
ConnectionBaseline4,0961,680,8992.42ms16.70ms6294.0%5.0GiB
ConnectionPipelined4,0964,805,63813.62ms53.70ms6216.1%4.9GiB
ConnectionShort-lived4,0961,481,7832.75ms28.40ms6256.6%5.0GiB
ConcurrencyAsync Delay32,0001,156,21827.48ms82.60ms6102.3%5.2GiB
EfficiencyLatency-10K1,0249,982107.1us140.0us45.1%1.6GiB
EfficiencyLatency-1M1,024998,0002016.4us37616.0us4013.5%4.9GiB
WorkloadJSON TLS4,096275,98616.92ms87.04ms6447.2%5.2GiB
Workload8Gbit51249,358792.9us32728.0us548.4%7.0GiB
WebSocketEcho5121,005,551510us860us6308.5%5.0GiB
WebSocketEcho4,096911,2564.45ms83.90ms5673.9%5.5GiB
WebSocketEcho16,384610,12126.33ms162.40ms5017.4%6.3GiB
WebSocketEcho Pipelined5121,032,5977.96ms76.00ms6163.4%5.0GiB
WebSocketEcho Pipelined4,096941,68468.88ms120.20ms5934.1%5.1GiB
WebSocketEcho Pipelined16,384674,443366.94ms615.10ms4640.2%6.8GiB

Compared with

The Kotlin entries around ktor-kronos-native on the HTTP/1.1 composite, and the one leading them. The last column shows every profile side by side.

EntryCompositevs ktor-kronos-native
ktron7557+174%head to head
ktor-tuned3767+37%head to head
ktor3100+12%head to head
neton2309-16%head to head
http4k1784-35%head to head

Compare ktor-kronos-native with any Kotlin entry · Compare ktor-kronos-native with any entry, in any language · Every Kotlin entry, ranked

Results updated · How the benchmark is run · The machine · Add or fix an entry