Kotlin VS Wasm benchmarks

Current benchmark data was generated on Tue Jul 01 2025, full log can be found HERE

CONTRIBUTIONS are WELCOME!

[x86_64][4 cores] AMD EPYC 7763 64-Core Processor (Model 1)

* -m in a file name stands for multi-threading or multi-processing

* -i in a file name stands for direct intrinsics usage. (Usage of simd intrinsics via libraries is not counted)

* -ffi in a file name stands for non-stdlib FFI usage

* (You may find time < time(user) + time(sys) for some non-parallelized programs, the overhead is from GC or JIT compiler, which are allowed to take advantage of multi-cores as that's more close to real-world scenarios.)

binarytrees

Input: 18

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
kotlin 1.kt 488ms 8.7ms 575.8MB 583ms 93ms kotlin/jvm 21
wasm 5.rs 1766ms 30ms 36.0MB 1747ms 7ms wasmtime 34.0.1
wasm 4.rs 1838ms 15ms 34.0MB 1817ms 10ms wasmtime 34.0.1
wasm 3.rs 1880ms 33ms 50.0MB 1850ms 13ms wasmtime 34.0.1
kotlin 1.kt 3941ms 160ms 145.0MB 4120ms 63ms kotlin/native 2.1.20

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
kotlin 1.kt 121ms 2.9ms 159.3MB 143ms 33ms kotlin/jvm 21
wasm 5.rs 167ms 1.1ms 20.1MB 150ms 0ms wasmtime 34.0.1
wasm 4.rs 174ms 1.7ms 20.0MB 160ms 3ms wasmtime 34.0.1
wasm 3.rs 179ms 2.1ms 22.1MB 163ms 0ms wasmtime 34.0.1
kotlin 1.kt 210ms 3.5ms 17.7MB 217ms 7ms kotlin/native 2.1.20

coro-prime-sieve

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 3.rs 1111ms 16ms 20.4MB 1100ms 0ms wasmtime 34.0.1
kotlin 2-m.kt 2049ms 224ms 241.0MB 7630ms 117ms kotlin/jvm 21
kotlin 1.kt 2241ms 54ms 220.1MB 3060ms 77ms kotlin/jvm 21
kotlin 2-m.kt 4233ms 52ms 21.4MB 14190ms 543ms kotlin/native 2.1.20
kotlin 1.kt timeout 0.0ms 17.4MB 5510ms 20ms kotlin/native 2.1.20

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 3.rs 77ms 0.4ms 19.1MB 67ms 0ms wasmtime 34.0.1
kotlin 2-m.kt 248ms 6.0ms 21.0MB 830ms 43ms kotlin/native 2.1.20
kotlin 1.kt 388ms 5.4ms 17.4MB 397ms 7ms kotlin/native 2.1.20
kotlin 1-m.kt 485ms 16ms 75.0MB 1087ms 43ms kotlin/jvm 21
kotlin 2-m.kt 854ms 53ms 101.2MB 2957ms 77ms kotlin/jvm 21

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
kotlin 1.kt 2.2ms 0.1ms 3.0MB 0ms 0ms kotlin/native 2.1.20
wasm 1.rs 6.7ms 0.5ms 18.3MB 0ms 0ms wasmtime 34.0.1
kotlin 1.kt 65ms 2.5ms 47.7MB 76ms 16ms kotlin/jvm 21

http-server

Input: 3000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
kotlin 2-m.kt 3271ms 1443ms 346.3MB 5647ms 970ms kotlin/jvm 21
kotlin 1.kt timeout 0.0ms 402.2MB 16220ms 2767ms kotlin/jvm 21

Input: 500

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
kotlin 1-m.kt 2119ms 180ms 229.3MB 6180ms 533ms kotlin/jvm 21
kotlin 2-m.kt 2206ms 240ms 241.3MB 4083ms 443ms kotlin/jvm 21

json-serde

Input: sample 5000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
kotlin 1-m.kt 848ms 12ms 174.2MB 2307ms 73ms kotlin/jvm 21

Input: canada 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
kotlin 1-m.kt 1778ms 57ms 662.5MB 4197ms 157ms kotlin/jvm 21

lru

Input: 1000 1000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 1.rs 90ms 1.3ms 18.5MB 80ms 0ms wasmtime 34.0.1
kotlin 2.kt 173ms 14ms 12.4MB 180ms 0ms kotlin/native 2.1.20
kotlin 1-m.kt 193ms 3.9ms 94.9MB 320ms 27ms kotlin/jvm 21
kotlin 2-m.kt 207ms 8.3ms 101.0MB 433ms 37ms kotlin/jvm 21
kotlin 1.kt 359ms 8.0ms 12.5MB 360ms 0ms kotlin/native 2.1.20

Input: 1000 3000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 1.rs 253ms 2.7ms 17.9MB 240ms 0ms wasmtime 34.0.1
kotlin 2-m.kt 318ms 3.4ms 212.1MB 533ms 57ms kotlin/jvm 21
kotlin 1.kt 341ms 3.1ms 202.9MB 460ms 37ms kotlin/jvm 21
kotlin 2.kt 475ms 5.0ms 12.4MB 503ms 0ms kotlin/native 2.1.20
kotlin 1.kt 1030ms 1.3ms 12.4MB 1057ms 7ms kotlin/native 2.1.20

Input: 100 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 1.rs 47ms 1.0ms 17.7MB 33ms 0ms wasmtime 34.0.1
kotlin 2.kt 95ms 0.7ms 12.8MB 90ms 0ms kotlin/native 2.1.20
kotlin 1.kt 121ms 0.6ms 12.8MB 117ms 0ms kotlin/native 2.1.20
kotlin 1-m.kt 153ms 1.1ms 90.5MB 293ms 23ms kotlin/jvm 21
kotlin 2-m.kt 170ms 13ms 96.5MB 367ms 33ms kotlin/jvm 21

merkletrees

Input: 17

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
kotlin 1.kt 389ms 8.7ms 680.7MB 447ms 90ms kotlin/jvm 21
wasm 1.rs 886ms 12ms 44.1MB 863ms 10ms wasmtime 34.0.1
kotlin 1.kt 1857ms 13ms 89.9MB 1940ms 43ms kotlin/native 2.1.20

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
kotlin 1-m.kt 159ms 6.4ms 207.2MB 217ms 37ms kotlin/jvm 21
wasm 1.rs 193ms 1.1ms 24.1MB 177ms 3ms wasmtime 34.0.1
kotlin 1.kt 258ms 3.7ms 25.7MB 263ms 10ms kotlin/native 2.1.20

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
kotlin 1n.kt 351ms 1.9ms 3.5MB 340ms 0ms kotlin/native 2.1.20
wasm 1.rs 404ms 3.4ms 18.0MB 390ms 0ms wasmtime 34.0.1
kotlin 1.kt 443ms 2.0ms 49.2MB 487ms 17ms kotlin/jvm 21
wasm 2.rs 562ms 0.4ms 18.3MB 550ms 0ms wasmtime 34.0.1

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
kotlin 1n.kt 38ms 0.7ms 3.6MB 30ms 0ms kotlin/native 2.1.20
wasm 1.rs 49ms 1.1ms 18.1MB 37ms 0ms wasmtime 34.0.1
wasm 2.rs 65ms 1.1ms 18.1MB 50ms 0ms wasmtime 34.0.1
kotlin 1-m.kt 118ms 1.1ms 49.4MB 167ms 13ms kotlin/jvm 21

pidigits

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 2.rs 2137ms 4.5ms 19.2MB 2123ms 0ms wasmtime 34.0.1
kotlin 1.kt 3717ms 19ms 358.9MB 4580ms 100ms kotlin/jvm 21
kotlin 1n.kt timeout 0.0ms 26.9MB 3970ms 1520ms kotlin/native 2.1.20
kotlin 2n.kt timeout 0.0ms 30.9MB 5110ms 127ms kotlin/native 2.1.20

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 2.rs 509ms 3.9ms 18.3MB 493ms 0ms wasmtime 34.0.1
kotlin 1-m.kt 983ms 36ms 353.7MB 1773ms 90ms kotlin/jvm 21
kotlin 1n.kt timeout 0.0ms 27.0MB 4003ms 1517ms kotlin/native 2.1.20
kotlin 2n.kt timeout 0.0ms 30.4MB 5110ms 123ms kotlin/native 2.1.20

regex-redux

Input: 2500000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
kotlin 1.kt timeout 0.0ms 173.4MB 5410ms 47ms kotlin/jvm 21
kotlin 1n.kt timeout 0.0ms 226.8MB 5063ms 120ms kotlin/native 2.1.20

Input: 250000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
kotlin 1-m.kt 841ms 4.2ms 134.6MB 1283ms 37ms kotlin/jvm 21
kotlin 1n.kt 3213ms 39ms 51.1MB 3283ms 77ms kotlin/native 2.1.20

secp256k1

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
kotlin 1.kt 3074ms 30ms 231.8MB 4047ms 73ms kotlin/jvm 21
wasm 1.rs 3428ms 13ms 17.9MB 3413ms 0ms wasmtime 34.0.1

Input: 500

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 1.rs 880ms 8.0ms 18.5MB 867ms 0ms wasmtime 34.0.1
kotlin 1-m.kt 987ms 13ms 231.9MB 1760ms 47ms kotlin/jvm 21