Kotlin VS Python benchmarks

Current benchmark data was generated on Thu Feb 01 2024, 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 469ms 5.8ms 575.8MB 550ms 80ms kotlin/jvm 21
python 1.py 1568ms 90ms 79.1MB 1510ms 40ms pypy 3.10.13
kotlin 1-m.kt 3056ms 54ms 248.5MB 5070ms 700ms kotlin/native 1.8.21
python 1.py timeout 0.0ms 41.3MB 4977ms 10ms cpython 3.12.1
python 1.py timeout 0.0ms 40.5MB 4763ms 223ms pyston 3.8.12

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
kotlin 1.kt 99ms 0.6ms 158.3MB 107ms 30ms kotlin/jvm 21
python 1.py 116ms 0.7ms 62.6MB 80ms 20ms pypy 3.10.13
kotlin 1-m.kt 270ms 4.6ms 28.5MB 430ms 60ms kotlin/native 1.8.21
python 1.py 478ms 4.3ms 11.9MB 450ms 13ms pyston 3.8.12
python 1.py 732ms 6.5ms 13.1MB 713ms 0ms cpython 3.12.1

coro-prime-sieve

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
python 1.py 301ms 0.9ms 20.4MB 277ms 7ms cpython 3.12.1
kotlin 2-m.kt 1773ms 358ms 242.2MB 6577ms 93ms kotlin/jvm 21
kotlin 1.kt 2141ms 6.2ms 220.2MB 3003ms 67ms kotlin/jvm 21
python 1.py 3056ms 23ms 116.4MB 2993ms 47ms pypy 3.10.13
kotlin 1.kt timeout 0.0ms 14.8MB 6140ms 457ms kotlin/native 1.8.21
kotlin 2-m.kt timeout 0.0ms 72.9MB 19063ms 127ms kotlin/native 1.8.21
python 1.py timeout 0.0ms 17.3MB 4980ms 7ms pyston 3.8.12

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
python 1.py 292ms 2.9ms 82.9MB 243ms 30ms pypy 3.10.13
python 1.py 303ms 0.9ms 20.4MB 280ms 7ms cpython 3.12.1
kotlin 2-m.kt 404ms 0.7ms 32.8MB 1477ms 27ms kotlin/native 1.8.21
kotlin 1-m.kt 465ms 18ms 74.9MB 1057ms 50ms kotlin/jvm 21
python 1.py 653ms 8.2ms 16.8MB 637ms 0ms pyston 3.8.12
kotlin 1.kt 683ms 4.2ms 10.8MB 820ms 57ms kotlin/native 1.8.21
kotlin 2-m.kt 912ms 14ms 99.8MB 3203ms 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.3ms 0.1ms 4.7MB 0ms 0ms kotlin/native 1.8.21
python 1.py 12ms 0.9ms 7.6MB 0ms 0ms pyston 3.8.12
python 1.py 14ms 1.3ms 9.0MB 0ms 0ms cpython 3.12.1
python 1.py 30ms 1.2ms 48.6MB 8ms 8ms pypy 3.10.13
kotlin 1.kt 58ms 4.5ms 47.3MB 58ms 14ms kotlin/jvm 21

http-server

Input: 3000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
python 1.py 2025ms 149ms 36.9MB 1037ms 1437ms pyston 3.8.12
python 1.py 2549ms 259ms 33.6MB 1583ms 1460ms cpython 3.12.1
kotlin 2-m.kt 3188ms 2764ms 353.0MB 15630ms 2370ms kotlin/jvm 21
python 1.py 4777ms 225ms 98.0MB 3277ms 1110ms pypy 3.10.13
kotlin 1.kt timeout 0.0ms 405.5MB 16613ms 2393ms kotlin/jvm 21

Input: 500

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
python 1.py 1113ms 9.9ms 28.9MB 323ms 247ms cpython 3.12.1
python 1.py 1119ms 55ms 30.6MB 210ms 260ms pyston 3.8.12
python 1.py 1605ms 357ms 88.8MB 810ms 207ms pypy 3.10.13
kotlin 2-m.kt 2166ms 328ms 250.2MB 3897ms 460ms kotlin/jvm 21
kotlin 1-m.kt 2399ms 24ms 215.3MB 6757ms 710ms kotlin/jvm 21

json-serde

Input: sample 5000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
python 1.py 201ms 6.4ms 38.4MB 160ms 27ms pyston 3.8.12
python 1.py 230ms 2.7ms 39.0MB 203ms 10ms cpython 3.12.1
python 1.py 326ms 1.1ms 85.7MB 280ms 27ms pypy 3.10.13
kotlin 1-m.kt 829ms 56ms 212.4MB 2217ms 83ms kotlin/jvm 21

Input: canada 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
python 1.py 1829ms 10ms 220.5MB 1663ms 147ms pyston 3.8.12
python 1.py 1914ms 6.7ms 221.7MB 1797ms 100ms cpython 3.12.1
python 1.py 1969ms 28ms 221.1MB 1883ms 70ms pypy 3.10.13
kotlin 1-m.kt 2357ms 60ms 1045.0MB 5193ms 157ms kotlin/jvm 21

lru

Input: 1000 1000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
python 2.py 154ms 4.7ms 56.8MB 123ms 17ms pypy 3.10.13
kotlin 1-m.kt 179ms 1.1ms 94.8MB 310ms 17ms kotlin/jvm 21
python 1.py 189ms 6.3ms 59.5MB 160ms 13ms pypy 3.10.13
kotlin 2-m.kt 199ms 5.9ms 100.7MB 413ms 33ms kotlin/jvm 21
kotlin 2.kt 303ms 2.6ms 7.8MB 433ms 10ms kotlin/native 1.8.21
kotlin 1.kt 507ms 10ms 7.8MB 607ms 3ms kotlin/native 1.8.21
python 1.py 729ms 10ms 8.9MB 713ms 0ms pyston 3.8.12
python 2.py 851ms 3.5ms 8.5MB 840ms 0ms pyston 3.8.12
python 1.py 1105ms 12ms 9.9MB 1093ms 0ms cpython 3.12.1
python 2.py 1288ms 22ms 9.5MB 1277ms 0ms cpython 3.12.1

Input: 1000 3000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
kotlin 2-m.kt 302ms 3.3ms 212.9MB 523ms 57ms kotlin/jvm 21
kotlin 1.kt 326ms 4.4ms 204.4MB 440ms 33ms kotlin/jvm 21
python 2.py 349ms 3.5ms 59.9MB 327ms 10ms pypy 3.10.13
python 1.py 395ms 5.9ms 60.9MB 367ms 17ms pypy 3.10.13
kotlin 2.kt 911ms 18ms 7.8MB 1313ms 50ms kotlin/native 1.8.21
kotlin 1.kt 1534ms 5.9ms 7.8MB 1860ms 30ms kotlin/native 1.8.21
python 1.py 2192ms 83ms 8.9MB 2180ms 0ms pyston 3.8.12
python 2.py 2556ms 13ms 8.5MB 2547ms 0ms pyston 3.8.12
python 1.py 3250ms 26ms 9.9MB 3233ms 0ms cpython 3.12.1
python 2.py 3744ms 9.6ms 9.5MB 3733ms 0ms cpython 3.12.1

Input: 100 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
python 2.py 113ms 4.7ms 56.5MB 87ms 10ms pypy 3.10.13
python 1.py 122ms 0.4ms 57.5MB 93ms 10ms pypy 3.10.13
kotlin 2.kt 141ms 2.9ms 5.8MB 193ms 3ms kotlin/native 1.8.21
kotlin 1-m.kt 143ms 4.2ms 90.6MB 260ms 37ms kotlin/jvm 21
kotlin 2-m.kt 158ms 11ms 95.6MB 307ms 40ms kotlin/jvm 21
kotlin 1.kt 180ms 1.3ms 5.8MB 237ms 0ms kotlin/native 1.8.21
python 1.py 349ms 6.2ms 8.5MB 337ms 0ms pyston 3.8.12
python 2.py 391ms 3.9ms 8.1MB 380ms 0ms pyston 3.8.12
python 1.py 528ms 10ms 9.5MB 517ms 0ms cpython 3.12.1
python 2.py 616ms 7.8ms 9.3MB 603ms 0ms cpython 3.12.1

merkletrees

Input: 17

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
kotlin 1.kt 352ms 3.1ms 677.8MB 383ms 80ms kotlin/jvm 21
kotlin 1-m.kt 1499ms 16ms 136.6MB 2307ms 317ms kotlin/native 1.8.21
python 1.py 2604ms 19ms 201.5MB 2490ms 97ms pypy 3.10.13
python 1.py timeout 0.0ms 81.6MB 4970ms 20ms cpython 3.12.1
python 1.py timeout 0.0ms 130.4MB 4943ms 40ms pyston 3.8.12

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
kotlin 1.kt 129ms 0.4ms 206.5MB 147ms 47ms kotlin/jvm 21
kotlin 1-m.kt 323ms 19ms 40.4MB 467ms 77ms kotlin/native 1.8.21
python 1.py 487ms 3.0ms 94.2MB 440ms 30ms pypy 3.10.13
python 1.py timeout 0.0ms 34.1MB 4977ms 7ms cpython 3.12.1
python 1.py timeout 0.0ms 41.4MB 4970ms 17ms pyston 3.8.12

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
kotlin 1n.kt 406ms 3.4ms 4.6MB 393ms 0ms kotlin/native 1.8.21
kotlin 1.kt 442ms 1.8ms 49.2MB 497ms 7ms kotlin/jvm 21
python 2.py 1386ms 17ms 60.4MB 1357ms 17ms pypy 3.10.13
python 1.py 2647ms 17ms 54.1MB 2617ms 10ms pypy 3.10.13
python 1.py timeout 0.0ms 9.1MB 4987ms 0ms cpython 3.12.1
python 2.py timeout 0.0ms 9.3MB 4990ms 0ms cpython 3.12.1
python 1.py timeout 0.0ms 8.3MB 4980ms 0ms pyston 3.8.12
python 2.py timeout 0.0ms 8.1MB 4983ms 0ms pyston 3.8.12

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
kotlin 1n.kt 44ms 0.9ms 4.6MB 33ms 0ms kotlin/native 1.8.21
kotlin 1-m.kt 120ms 0.3ms 49.4MB 167ms 17ms kotlin/jvm 21
python 2.py 179ms 0.4ms 55.8MB 153ms 10ms pypy 3.10.13
python 1.py 305ms 5.4ms 54.0MB 283ms 10ms pypy 3.10.13
python 1.py 942ms 43ms 8.3MB 930ms 0ms pyston 3.8.12
python 2.py 1314ms 31ms 8.1MB 1300ms 0ms pyston 3.8.12
python 1.py 2986ms 131ms 9.1MB 2973ms 0ms cpython 3.12.1
python 2.py 3077ms 2.2ms 9.1MB 3063ms 0ms cpython 3.12.1

pidigits

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
python 4.py 1897ms 5.0ms 8.9MB 1850ms 30ms pyston 3.8.12
python 4.py 1959ms 2.6ms 9.9MB 1910ms 33ms cpython 3.12.1
python 4.py 2334ms 11ms 63.4MB 2280ms 37ms pypy 3.10.13
kotlin 1.kt 3719ms 43ms 355.7MB 4563ms 90ms kotlin/jvm 21
kotlin 1n.kt timeout 0.0ms 7.5MB 6490ms 283ms kotlin/native 1.8.21
kotlin 2n.kt timeout 0.0ms 8.2MB 4980ms 173ms kotlin/native 1.8.21

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
python 4.py 450ms 3.6ms 8.8MB 433ms 0ms pyston 3.8.12
python 4.py 466ms 5.6ms 9.6MB 450ms 0ms cpython 3.12.1
python 4.py 569ms 8.0ms 61.9MB 537ms 13ms pypy 3.10.13
kotlin 1-m.kt 976ms 35ms 353.3MB 1717ms 97ms kotlin/jvm 21
kotlin 1n.kt timeout 0.0ms 7.4MB 6410ms 283ms kotlin/native 1.8.21
kotlin 2n.kt timeout 0.0ms 8.2MB 5020ms 130ms kotlin/native 1.8.21

regex-redux

Input: 2500000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
python 1.py 2250ms 4.5ms 233.5MB 2197ms 33ms pypy 3.10.13
python 1.py 4736ms 9.4ms 226.2MB 4533ms 187ms pyston 3.8.12
kotlin 1.kt timeout 0.0ms 173.0MB 5387ms 50ms kotlin/jvm 21
kotlin 1n.kt timeout 0.0ms 279.0MB 4880ms 1073ms kotlin/native 1.8.21
python 1.py timeout 0.0ms 129.4MB 4950ms 37ms cpython 3.12.1

Input: 250000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
python 1.py 342ms 4.3ms 75.2MB 303ms 23ms pypy 3.10.13
python 1.py 493ms 1.8ms 30.5MB 463ms 17ms pyston 3.8.12
python 1.py 616ms 5.5ms 29.9MB 577ms 20ms cpython 3.12.1
kotlin 1-m.kt 825ms 28ms 134.0MB 1250ms 40ms kotlin/jvm 21
kotlin 1n.kt 3285ms 241ms 65.0MB 4160ms 13ms kotlin/native 1.8.21

secp256k1

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
kotlin 1.kt 3058ms 41ms 233.9MB 3943ms 80ms kotlin/jvm 21
python 1.py 3144ms 7.0ms 8.3MB 3127ms 0ms pyston 3.8.12
python 1.py 3598ms 18ms 9.1MB 3590ms 0ms cpython 3.12.1
python 1.py 3760ms 22ms 62.8MB 3723ms 20ms pypy 3.10.13

Input: 500

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
python 1.py 801ms 9.6ms 8.3MB 790ms 0ms pyston 3.8.12
python 1.py 914ms 2.1ms 9.1MB 900ms 0ms cpython 3.12.1
kotlin 1-m.kt 975ms 45ms 233.6MB 1800ms 47ms kotlin/jvm 21
python 1.py 1044ms 16ms 61.5MB 1020ms 10ms pypy 3.10.13