Python VS Kotlin benchmarks

Current benchmark data was generated on Sat Jan 28 2023, full log can be found HERE

CONTRIBUTIONS are WELCOME!

[x86_64][2 cores] Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz (Model 106)

* -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 629ms 6.5ms 413.0MB 657ms 77ms kotlin/jvm 17.0.2
python 1.py 3016ms 52ms 271.6MB 2870ms 130ms pypy 3.9.16
kotlin 1.kt timeout 0.0ms 282.5MB 8413ms 1150ms kotlin/native 1.8.0
python 1.py timeout 0.0ms 40.9MB 4977ms 7ms cpython 3.11.1
python 1.py timeout 0.0ms 40.2MB 4900ms 80ms pyston 3.8.12

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
python 1.py 113ms 3.4ms 80.6MB 87ms 10ms pypy 3.9.16
kotlin 1.kt 125ms 2.0ms 109.7MB 107ms 27ms kotlin/jvm 17.0.2
kotlin 1-m.kt 494ms 11ms 30.5MB 847ms 77ms kotlin/native 1.8.0
python 1.py 613ms 1.2ms 12.0MB 583ms 10ms pyston 3.8.12
python 1.py 972ms 3.3ms 12.5MB 957ms 3ms cpython 3.11.1

coro-prime-sieve

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
python 1.py 1646ms 35ms 193.2MB 1543ms 87ms pypy 3.9.16
kotlin 1.kt 2892ms 79ms 160.4MB 3693ms 57ms kotlin/jvm 17.0.2
kotlin 2-m.kt 3128ms 450ms 157.4MB 5980ms 57ms kotlin/jvm 17.0.2
kotlin 1.kt timeout 0.0ms 10.8MB 6177ms 300ms kotlin/native 1.8.0
kotlin 2-m.kt timeout 0.0ms 35.0MB 9297ms 150ms kotlin/native 1.8.0
python 1.py timeout 0.0ms 20.2MB 4973ms 7ms cpython 3.11.1
python 1.py timeout 0.0ms 17.2MB 4973ms 3ms pyston 3.8.12

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
python 1.py 320ms 4.8ms 92.8MB 280ms 20ms pypy 3.9.16
kotlin 1-m.kt 706ms 24ms 99.1MB 1240ms 40ms kotlin/jvm 17.0.2
kotlin 2-m.kt 811ms 15ms 26.1MB 1450ms 33ms kotlin/native 1.8.0
python 1.py 818ms 1.1ms 20.0MB 797ms 3ms cpython 3.11.1
python 1.py 943ms 6.4ms 16.7MB 923ms 3ms pyston 3.8.12
kotlin 1.kt 1032ms 12ms 8.8MB 1270ms 57ms kotlin/native 1.8.0
kotlin 2-m.kt 1082ms 129ms 114.4MB 1967ms 50ms kotlin/jvm 17.0.2

edigits

Input: 250001

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
python 1.py 711ms 11ms 81.6MB 680ms 13ms pypy 3.9.16
python 1.py 1658ms 0.8ms 10.1MB 1643ms 0ms cpython 3.11.1
python 1.py 2817ms 53ms 9.7MB 2807ms 0ms pyston 3.8.12

Input: 100000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
python 1.py 193ms 3.6ms 78.5MB 160ms 17ms pypy 3.9.16
python 1.py 301ms 0.7ms 9.4MB 290ms 0ms cpython 3.11.1
python 1.py 481ms 1.1ms 9.0MB 470ms 0ms pyston 3.8.12

fasta

Input: 2500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
python 1.py 3281ms 110ms 88.1MB 3240ms 23ms pypy 3.9.16
python 5-m.py 4072ms 15ms 13.5MB 5707ms 977ms cpython 3.11.1
python 1.py 4085ms 11ms 8.0MB 4063ms 7ms pyston 3.8.12
python 5-m.py 4087ms 56ms 12.5MB 6220ms 1000ms pyston 3.8.12
python 5-m.py 4461ms 125ms 82.8MB 5007ms 1030ms pypy 3.9.16
python 1.py timeout 0.0ms 8.5MB 4990ms 0ms cpython 3.11.1

Input: 250000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
python 1.py 430ms 8.6ms 7.9MB 413ms 0ms pyston 3.8.12
python 1.py 444ms 84ms 79.3MB 410ms 20ms pypy 3.9.16
python 5-m.py 468ms 23ms 12.7MB 667ms 150ms pyston 3.8.12
python 5-m.py 472ms 3.0ms 13.5MB 617ms 113ms cpython 3.11.1
python 1.py 603ms 4.7ms 8.6MB 590ms 0ms cpython 3.11.1
python 5-m.py 838ms 30ms 82.5MB 903ms 487ms pypy 3.9.16

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
kotlin 1.kt 2.6ms 1.0ms 1.5MB 0ms 0ms kotlin/native 1.8.0
python 1.py 13ms 0.4ms 7.3MB 10ms 0ms pyston 3.8.12
python 1.py 14ms 1.4ms 8.4MB 10ms 0ms cpython 3.11.1
python 1.py 38ms 3.1ms 51.6MB 14ms 10ms pypy 3.9.16
kotlin 1.kt 66ms 1.4ms 40.8MB 50ms 8ms kotlin/jvm 17.0.2

http-server

Input: 3000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
python 1.py 1489ms 10ms 35.2MB 1097ms 800ms pyston 3.8.12
python 1.py 1783ms 2.7ms 30.0MB 1437ms 763ms cpython 3.11.1
python 1.py 4609ms 150ms 127.8MB 3567ms 920ms pypy 3.9.16
kotlin 1.kt timeout 0.0ms 296.5MB 8853ms 617ms kotlin/jvm 17.0.2
kotlin 2.kt timeout 0.0ms 267.6MB 8833ms 673ms kotlin/jvm 17.0.2

Input: 500

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
python 1.py 350ms 1.8ms 29.5MB 260ms 137ms pyston 3.8.12
python 1.py 365ms 1.5ms 24.8MB 303ms 113ms cpython 3.11.1
python 1.py 1188ms 74ms 104.0MB 950ms 210ms pypy 3.9.16
kotlin 2-m.kt 2340ms 166ms 198.0MB 3627ms 210ms kotlin/jvm 17.0.2
kotlin 1-m.kt 2612ms 76ms 184.0MB 3997ms 273ms kotlin/jvm 17.0.2

json-serde

Input: sample 5000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
python 1.py 254ms 1.2ms 41.5MB 230ms 10ms cpython 3.11.1
python 1.py 278ms 19ms 38.9MB 243ms 20ms pyston 3.8.12
python 1.py 411ms 17ms 104.6MB 367ms 27ms pypy 3.9.16
kotlin 1-m.kt 1170ms 37ms 217.4MB 2000ms 90ms kotlin/jvm 17.0.2

Input: canada 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
python 1.py 2342ms 8.5ms 223.0MB 2233ms 97ms cpython 3.11.1
python 1.py 2431ms 35ms 220.6MB 2267ms 150ms pyston 3.8.12
python 1.py 2537ms 19ms 245.2MB 2410ms 110ms pypy 3.9.16
kotlin 1.kt 4233ms 274ms 875.8MB 6110ms 223ms kotlin/jvm 17.0.2

knucleotide

Input: 2500000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
python 3-m.py 4291ms 242ms 202.2MB 7437ms 357ms pypy 3.9.16
python 3.py timeout 0.0ms 35.0MB 87ms 17ms cpython 3.11.1
python 3.py timeout 0.0ms 34.3MB 73ms 17ms pyston 3.8.12

Input: 250000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
python 3-m.py 618ms 72ms 94.3MB 927ms 110ms pypy 3.9.16
python 3-m.py 737ms 14ms 17.6MB 1307ms 20ms pyston 3.8.12
python 3-m.py 843ms 37ms 16.9MB 1520ms 27ms cpython 3.11.1

lru

Input: 1000 1000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
python 2.py 212ms 19ms 77.3MB 177ms 13ms pypy 3.9.16
kotlin 2-m.kt 221ms 5.0ms 113.5MB 323ms 27ms kotlin/jvm 17.0.2
kotlin 1.kt 240ms 5.8ms 109.4MB 290ms 17ms kotlin/jvm 17.0.2
python 1.py 248ms 4.0ms 78.2MB 207ms 23ms pypy 3.9.16
kotlin 2-m.kt 442ms 3.8ms 42.5MB 727ms 13ms kotlin/native 1.8.0
python 1.py 976ms 2.0ms 9.0MB 960ms 0ms pyston 3.8.12
python 2.py 1156ms 1.7ms 8.7MB 1140ms 0ms pyston 3.8.12
python 1.py 1300ms 7.9ms 9.3MB 1287ms 0ms cpython 3.11.1
python 2.py 1494ms 5.2ms 9.1MB 1477ms 0ms cpython 3.11.1
kotlin 1.kt timeout 0.0ms 15.0MB 4993ms 10ms kotlin/native 1.8.0

Input: 1000 3000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
kotlin 2.kt 365ms 4.2ms 132.5MB 460ms 33ms kotlin/jvm 17.0.2
kotlin 1.kt 458ms 3.2ms 132.6MB 507ms 23ms kotlin/jvm 17.0.2
python 2.py 475ms 2.8ms 77.2MB 443ms 10ms pypy 3.9.16
python 1.py 512ms 11ms 78.8MB 480ms 17ms pypy 3.9.16
kotlin 2-m.kt 1377ms 6.7ms 145.0MB 2233ms 87ms kotlin/native 1.8.0
python 1.py 2900ms 12ms 9.0MB 2880ms 3ms pyston 3.8.12
python 2.py 3456ms 28ms 8.8MB 3440ms 0ms pyston 3.8.12
python 1.py 3892ms 45ms 9.5MB 3877ms 0ms cpython 3.11.1
python 2.py 4470ms 72ms 9.1MB 4453ms 0ms cpython 3.11.1
kotlin 1.kt timeout 0.0ms 15.0MB 4997ms 0ms kotlin/native 1.8.0

Input: 100 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
python 2.py 141ms 3.5ms 77.2MB 110ms 17ms pypy 3.9.16
python 1.py 171ms 15ms 78.2MB 140ms 13ms pypy 3.9.16
kotlin 1.kt 172ms 3.4ms 75.8MB 243ms 10ms kotlin/jvm 17.0.2
kotlin 2.kt 186ms 6.0ms 78.6MB 250ms 27ms kotlin/jvm 17.0.2
kotlin 2-m.kt 224ms 4.4ms 32.4MB 383ms 3ms kotlin/native 1.8.0
python 1.py 476ms 3.0ms 8.7MB 460ms 0ms pyston 3.8.12
python 2.py 539ms 3.6ms 8.2MB 523ms 0ms pyston 3.8.12
python 1.py 619ms 4.0ms 8.9MB 607ms 0ms cpython 3.11.1
python 2.py 745ms 5.0ms 8.4MB 733ms 0ms cpython 3.11.1
kotlin 1.kt timeout 0.0ms 17.1MB 5000ms 7ms kotlin/native 1.8.0

merkletrees

Input: 17

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
kotlin 1.kt 444ms 4.8ms 285.8MB 437ms 57ms kotlin/jvm 17.0.2
kotlin 1-m.kt 2678ms 5.5ms 138.5MB 4327ms 570ms kotlin/native 1.8.0
python 1.py 3586ms 375ms 292.5MB 3383ms 180ms pypy 3.9.16
python 1.py timeout 0.0ms 93.0MB 4947ms 33ms cpython 3.11.1
python 1.py timeout 0.0ms 130.3MB 4947ms 30ms pyston 3.8.12

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
kotlin 1.kt 174ms 3.5ms 221.9MB 160ms 43ms kotlin/jvm 17.0.2
kotlin 1-m.kt 516ms 7.8ms 38.4MB 817ms 87ms kotlin/native 1.8.0
python 1.py 543ms 129ms 138.5MB 483ms 47ms pypy 3.9.16
python 1.py timeout 0.0ms 37.3MB 4967ms 17ms cpython 3.11.1
python 1.py timeout 0.0ms 41.4MB 4963ms 13ms pyston 3.8.12

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
kotlin 1n.kt 548ms 2.0ms 1.5MB 537ms 0ms kotlin/native 1.8.0
kotlin 1.kt 573ms 6.6ms 42.9MB 570ms 13ms kotlin/jvm 17.0.2
python 2.py 2692ms 149ms 77.4MB 2660ms 13ms pypy 3.9.16
python 1.py 3533ms 41ms 76.5MB 3500ms 17ms pypy 3.9.16
python 1.py timeout 0.0ms 8.4MB 4983ms 0ms cpython 3.11.1
python 2.py timeout 0.0ms 8.6MB 4990ms 0ms cpython 3.11.1
python 1.py timeout 0.0ms 8.4MB 4977ms 3ms pyston 3.8.12
python 2.py timeout 0.0ms 8.0MB 4990ms 0ms pyston 3.8.12

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
kotlin 1n.kt 58ms 1.5ms 1.5MB 47ms 0ms kotlin/native 1.8.0
kotlin 1.kt 140ms 5.3ms 42.7MB 140ms 17ms kotlin/jvm 17.0.2
python 2.py 305ms 26ms 77.0MB 277ms 10ms pypy 3.9.16
python 1.py 400ms 3.4ms 76.4MB 373ms 10ms pypy 3.9.16
python 1.py 1193ms 1.0ms 8.3MB 1180ms 0ms pyston 3.8.12
python 2.py 1636ms 28ms 7.9MB 1623ms 0ms pyston 3.8.12
python 2.py 3404ms 24ms 8.6MB 3393ms 0ms cpython 3.11.1
python 1.py 3437ms 149ms 8.4MB 3423ms 0ms cpython 3.11.1

nsieve

Input: 12

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
python 1.py 4480ms 211ms 389.1MB 4330ms 133ms pypy 3.9.16
python 1.py timeout 0.0ms 321.1MB 4937ms 50ms cpython 3.11.1
python 2.py timeout 0.0ms 633.6MB 4690ms 293ms cpython 3.11.1
python 2.py timeout 0.0ms 1013.7MB 4620ms 360ms pypy 3.9.16
python 1.py timeout 0.0ms 320.5MB 4897ms 87ms pyston 3.8.12
python 2.py timeout 0.0ms 633.2MB 4577ms 403ms pyston 3.8.12

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
python 1.py 1085ms 58ms 213.2MB 1033ms 37ms pypy 3.9.16
python 2.py 1345ms 7.3ms 164.4MB 1253ms 70ms pyston 3.8.12
python 2.py 1668ms 7.8ms 164.8MB 1593ms 60ms cpython 3.11.1
python 1.py 1746ms 35ms 86.1MB 1713ms 20ms pyston 3.8.12
python 2.py 1769ms 128ms 266.8MB 1623ms 123ms pypy 3.9.16
python 1.py 2971ms 17ms 86.7MB 2933ms 20ms cpython 3.11.1

pidigits

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
python 4.py 2780ms 3.4ms 9.1MB 2750ms 10ms pyston 3.8.12
python 4.py 2785ms 5.2ms 9.4MB 2753ms 20ms cpython 3.11.1
python 4.py 3067ms 120ms 117.1MB 3013ms 37ms pypy 3.9.16
kotlin 1.kt timeout 0.0ms 218.2MB 5383ms 67ms kotlin/jvm 17.0.2
kotlin 1n.kt timeout 0.0ms 23.1MB 6287ms 170ms kotlin/native 1.8.0
kotlin 2n.kt timeout 0.0ms 10.4MB 5020ms 103ms kotlin/native 1.8.0

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
python 4.py 658ms 0.4ms 8.8MB 643ms 0ms pyston 3.8.12
python 4.py 660ms 1.0ms 9.1MB 650ms 0ms cpython 3.11.1
python 4.py 776ms 32ms 81.6MB 747ms 13ms pypy 3.9.16
kotlin 1.kt 1437ms 6.9ms 210.3MB 1770ms 57ms kotlin/jvm 17.0.2
kotlin 1n.kt timeout 0.0ms 18.8MB 6257ms 147ms kotlin/native 1.8.0
kotlin 2n.kt timeout 0.0ms 10.2MB 5017ms 103ms kotlin/native 1.8.0

regex-redux

Input: 2500000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
python 1.py 3568ms 25ms 262.2MB 3440ms 110ms pypy 3.9.16
kotlin 1.kt timeout 0.0ms 159.4MB 5310ms 60ms kotlin/jvm 17.0.2
kotlin 1n.kt timeout 0.0ms 277.3MB 5447ms 763ms kotlin/native 1.8.0
python 1.py timeout 0.0ms 108.4MB 4953ms 27ms cpython 3.11.1
python 1.py timeout 0.0ms 106.9MB 4930ms 50ms pyston 3.8.12

Input: 250000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
python 1.py 501ms 2.5ms 100.6MB 457ms 27ms pypy 3.9.16
python 1.py 706ms 1.3ms 30.5MB 670ms 20ms pyston 3.8.12
python 1.py 828ms 1.2ms 31.9MB 793ms 17ms cpython 3.11.1
kotlin 1.kt 1080ms 5.7ms 95.1MB 1430ms 33ms kotlin/jvm 17.0.2
kotlin 1n.kt 4415ms 48ms 65.1MB 5760ms 13ms kotlin/native 1.8.0

secp256k1

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
python 1.py 4446ms 11ms 8.6MB 4430ms 0ms pyston 3.8.12
kotlin 1.kt 4451ms 34ms 184.1MB 5353ms 50ms kotlin/jvm 17.0.2
python 1.py 4616ms 3.9ms 8.4MB 4600ms 0ms cpython 3.11.1
python 1.py timeout 0.0ms 84.1MB 4963ms 13ms pypy 3.9.16

Input: 500

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
python 1.py 1129ms 7.4ms 8.5MB 1113ms 0ms pyston 3.8.12
python 1.py 1163ms 3.5ms 8.4MB 1150ms 0ms cpython 3.11.1
kotlin 1-m.kt 1374ms 19ms 184.2MB 2113ms 47ms kotlin/jvm 17.0.2
python 1.py 1508ms 32ms 81.8MB 1473ms 17ms pypy 3.9.16

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
python 8.py timeout 0.0ms 16.5MB 57ms 7ms cpython 3.11.1
python 8.py timeout 0.0ms 105.2MB 717ms 120ms pypy 3.9.16
python 8.py timeout 0.0ms 17.7MB 57ms 23ms pyston 3.8.12

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
python 8.py timeout 0.0ms 18.2MB 113ms 10ms cpython 3.11.1
python 8.py timeout 0.0ms 107.0MB 1267ms 210ms pypy 3.9.16
python 8.py timeout 0.0ms 17.2MB 160ms 20ms pyston 3.8.12

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
python 8-m.py 3558ms 133ms 107.0MB 6063ms 373ms pypy 3.9.16
python 8.py timeout 0.0ms 15.9MB 243ms 30ms cpython 3.11.1
python 8.py timeout 0.0ms 17.1MB 357ms 73ms pyston 3.8.12