Python VS Go benchmarks

Current benchmark data was generated on Fri Sep 30 2022, full log can be found HERE

CONTRIBUTIONS are WELCOME!

[x86_64][2 cores] Intel(R) Xeon(R) Platinum 8272CL CPU @ 2.60GHz (Model 85)

* -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
python 1.py 1760ms 27ms 220.4MB 1617ms 123ms pypy 3.8.13
go 1.go 3077ms 30ms 45.6MB 4420ms 73ms go 1.19.1
go 1.go 4620ms 32ms 38.6MB 4597ms 7ms tinygo 0.25.0
python 1.py timeout 0.0ms 0.0MB 0ms 0ms cpython 3.10.7
python 1.py timeout 0.0ms 0.0MB 0ms 0ms pyston 3.8.12

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
python 1.py 143ms 21ms 78.6MB 97ms 23ms pypy 3.8.13
go 1.go 259ms 1.6ms 8.0MB 343ms 3ms go 1.19.1
go 1.go 368ms 2.5ms 5.9MB 357ms 0ms tinygo 0.25.0
python 1.py 672ms 1.8ms 12.0MB 647ms 10ms pyston 3.8.12
python 1.py 1631ms 5.5ms 11.8MB 1610ms 3ms cpython 3.10.7

coro-prime-sieve

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1-m.go 768ms 24ms 15.4MB 1480ms 0ms go 1.19.1
python 1.py 1507ms 105ms 221.2MB 1387ms 107ms pypy 3.8.13
go 1.go 1998ms 12ms 257.5MB 1930ms 53ms tinygo 0.25.0
python 1.py timeout 0.0ms 0.0MB 0ms 0ms cpython 3.10.7
python 1.py timeout 0.0ms 0.0MB 0ms 0ms pyston 3.8.12

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1-m.go 68ms 8.6ms 6.9MB 103ms 0ms go 1.19.1
go 1.go 300ms 1.1ms 68.6MB 270ms 10ms tinygo 0.25.0
python 1.py 311ms 11ms 90.3MB 267ms 23ms pypy 3.8.13
python 1.py 867ms 4.7ms 16.9MB 837ms 7ms pyston 3.8.12
python 1.py 932ms 46ms 16.9MB 883ms 7ms cpython 3.10.7

edigits

Input: 250001

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1.go 161ms 0.6ms 8.4MB 150ms 3ms go 1.19.1
python 1.py 754ms 3.2ms 83.2MB 710ms 27ms pypy 3.8.13
python 1.py 1409ms 0.8ms 9.3MB 1397ms 0ms cpython 3.10.7
python 1.py 2303ms 5.0ms 9.7MB 2283ms 0ms pyston 3.8.12

Input: 100000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1.go 50ms 2.1ms 10.0MB 37ms 0ms go 1.19.1
python 1.py 214ms 1.1ms 75.9MB 173ms 23ms pypy 3.8.13
python 1.py 267ms 1.1ms 8.5MB 250ms 0ms cpython 3.10.7
python 1.py 405ms 0.6ms 8.9MB 390ms 0ms pyston 3.8.12

fasta

Input: 2500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 3-m.go 207ms 4.9ms 2.9MB 370ms 0ms go 1.19.1
python 1.py 3029ms 165ms 89.2MB 2983ms 27ms pypy 3.8.13
python 5-m.py 3558ms 20ms 12.6MB 5183ms 1190ms pyston 3.8.12
python 1.py 3999ms 58ms 7.9MB 3983ms 0ms pyston 3.8.12
python 5-m.py 4619ms 10ms 12.1MB 6683ms 1273ms cpython 3.10.7
python 1.py timeout 0.0ms 0.0MB 0ms 0ms cpython 3.10.7
python 5-m.py timeout 0.0ms 0.0MB 0ms 0ms pypy 3.8.13

Input: 250000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 3.go 27ms 1.4ms 4.9MB 30ms 0ms go 1.19.1
python 1.py 387ms 10.0ms 75.2MB 357ms 17ms pypy 3.8.13
python 1.py 410ms 0.9ms 7.9MB 397ms 0ms pyston 3.8.12
python 5-m.py 438ms 9.0ms 12.7MB 557ms 160ms pyston 3.8.12
python 5-m.py 575ms 55ms 12.1MB 727ms 160ms cpython 3.10.7
python 1.py 714ms 3.9ms 7.8MB 700ms 0ms cpython 3.10.7
python 5-m.py 916ms 11ms 78.8MB 1077ms 460ms pypy 3.8.13

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1.go 2.1ms 0.8ms 2.0MB 0ms 0ms tinygo 0.25.0
go 1.go 3.4ms 0.5ms 2.9MB 0ms 0ms go 1.19.1
python 1.py 14ms 0.9ms 7.4MB 10ms 0ms cpython 3.10.7
python 1.py 15ms 2.2ms 7.2MB 10ms 0ms pyston 3.8.12
python 1.py 38ms 0.5ms 55.0MB 12ms 12ms pypy 3.8.13

http-server

Input: 3000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1-http2.go 189ms 17ms 58.5MB 283ms 43ms go 1.19.1
go 2-m.go 677ms 60ms 172.2MB 630ms 440ms go 1.19.1
go 1-m.go 689ms 44ms 172.9MB 677ms 437ms go 1.19.1
python 1.py 1757ms 1.9ms 29.7MB 1447ms 1027ms pyston 3.8.12
python 1.py 2405ms 4.7ms 27.4MB 2077ms 1120ms cpython 3.10.7
python 1.py timeout 0.0ms 0.0MB 0ms 0ms pypy 3.8.13

Input: 500

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1-http2.go 49ms 5.1ms 24.5MB 33ms 23ms go 1.19.1
go 2.go 136ms 12ms 37.0MB 90ms 57ms go 1.19.1
go 1.go 147ms 3.4ms 38.8MB 93ms 63ms go 1.19.1
python 1.py 388ms 5.2ms 23.8MB 313ms 183ms pyston 3.8.12
python 1.py 482ms 11ms 21.9MB 397ms 203ms cpython 3.10.7
python 1.py 1197ms 25ms 98.9MB 960ms 197ms pypy 3.8.13

json-serde

Input: sample 5000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 2-ffi.go 76ms 3.0ms 44.6MB 60ms 10ms go 1.19.1
go 1.go 182ms 3.9ms 18.8MB 163ms 7ms go 1.19.1
python 1.py 272ms 1.4ms 38.2MB 233ms 23ms pyston 3.8.12
python 1.py 286ms 2.2ms 38.6MB 257ms 13ms cpython 3.10.7
python 1.py 451ms 0.5ms 104.8MB 403ms 37ms pypy 3.8.13

Input: canada 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 2-ffi.go 378ms 4.0ms 175.4MB 363ms 67ms go 1.19.1
go 1.go 1055ms 7.7ms 103.3MB 1027ms 47ms go 1.19.1
python 1.py 2580ms 13ms 220.7MB 2457ms 103ms cpython 3.10.7
python 1.py 2581ms 3.2ms 220.6MB 2397ms 167ms pyston 3.8.12
python 1.py 2829ms 2.8ms 242.7MB 2720ms 93ms pypy 3.8.13

knucleotide

Input: 2500000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 7-m.go 1349ms 13ms 41.6MB 2507ms 27ms go 1.19.1
python 3-m.py 4676ms 11ms 212.4MB 8260ms 367ms pypy 3.8.13
python 3.py timeout 0.0ms 0.0MB 0ms 0ms cpython 3.10.7
python 3.py timeout 0.0ms 0.0MB 0ms 0ms pyston 3.8.12

Input: 250000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 7-m.go 220ms 4.9ms 22.3MB 340ms 23ms go 1.19.1
python 3-m.py 639ms 5.8ms 88.6MB 943ms 123ms pypy 3.8.13
python 3-m.py 651ms 4.7ms 15.6MB 1147ms 37ms pyston 3.8.12
python 3-m.py 991ms 21ms 13.6MB 1737ms 40ms cpython 3.10.7

lru

Input: 1000 1000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 3.go 160ms 0.5ms 0.3MB 150ms 0ms tinygo 0.25.0
go 3.go 170ms 0.3ms 2.8MB 157ms 0ms go 1.19.1
python 2.py 238ms 4.4ms 73.9MB 200ms 20ms pypy 3.8.13
python 1.py 278ms 1.8ms 75.5MB 240ms 20ms pypy 3.8.13
python 1.py 937ms 1.0ms 8.9MB 920ms 0ms pyston 3.8.12
python 2.py 1082ms 6.0ms 8.7MB 1070ms 0ms pyston 3.8.12
python 1.py 1759ms 7.5ms 8.4MB 1743ms 3ms cpython 3.10.7
python 2.py 2552ms 33ms 8.3MB 2537ms 0ms cpython 3.10.7

Input: 1000 3000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 3.go 475ms 1.0ms 0.3MB 460ms 0ms tinygo 0.25.0
go 3.go 490ms 2.3ms 2.9MB 480ms 0ms go 1.19.1
python 2.py 561ms 2.2ms 74.9MB 533ms 13ms pypy 3.8.13
python 1.py 613ms 0.9ms 76.0MB 577ms 23ms pypy 3.8.13
python 1.py 2803ms 51ms 8.9MB 2783ms 0ms pyston 3.8.12
python 2.py 3188ms 7.1ms 8.6MB 3177ms 0ms pyston 3.8.12
python 1.py timeout 0.0ms 0.0MB 0ms 0ms cpython 3.10.7
python 2.py timeout 0.0ms 0.0MB 0ms 0ms cpython 3.10.7

Input: 100 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 3.go 79ms 0.2ms 2.0MB 70ms 0ms tinygo 0.25.0
go 3.go 90ms 0.3ms 3.6MB 80ms 0ms go 1.19.1
python 2.py 166ms 0.5ms 74.4MB 137ms 13ms pypy 3.8.13
python 1.py 184ms 1.9ms 74.5MB 153ms 10ms pypy 3.8.13
python 1.py 455ms 3.9ms 8.7MB 440ms 0ms pyston 3.8.12
python 2.py 503ms 2.3ms 8.2MB 487ms 0ms pyston 3.8.12
python 1.py 836ms 3.1ms 7.9MB 807ms 3ms cpython 3.10.7
python 2.py 1255ms 20ms 7.3MB 1243ms 0ms cpython 3.10.7

merkletrees

Input: 17

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1.go 2053ms 15ms 38.2MB 2917ms 47ms go 1.19.1
go 2.go 2357ms 19ms 41.1MB 3357ms 67ms go 1.19.1
python 1.py 2706ms 50ms 233.4MB 2520ms 167ms pypy 3.8.13
go 1.go 3664ms 2.2ms 213.2MB 3600ms 47ms tinygo 0.25.0
go 2.go timeout 0.0ms 0.0MB 0ms 0ms tinygo 0.25.0
python 1.py timeout 0.0ms 0.0MB 0ms 0ms cpython 3.10.7
python 1.py timeout 0.0ms 0.0MB 0ms 0ms pyston 3.8.12

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
python 1.py 389ms 1.4ms 150.9MB 323ms 47ms pypy 3.8.13
go 1.go 426ms 5.0ms 12.5MB 583ms 13ms go 1.19.1
go 2.go 492ms 3.3ms 14.1MB 680ms 10ms go 1.19.1
go 1.go 867ms 5.2ms 51.6MB 840ms 13ms tinygo 0.25.0
go 2.go 1183ms 11ms 39.3MB 1150ms 10ms tinygo 0.25.0
python 1.py timeout 0.0ms 0.0MB 0ms 0ms cpython 3.10.7
python 1.py timeout 0.0ms 0.0MB 0ms 0ms pyston 3.8.12

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1.go 505ms 1.8ms 2.9MB 490ms 0ms go 1.19.1
go 1.go 706ms 0.5ms 0.0MB 690ms 0ms tinygo 0.25.0
python 2.py 2105ms 22ms 74.5MB 2077ms 10ms pypy 3.8.13
python 1.py timeout 0.0ms 0.0MB 0ms 0ms cpython 3.10.7
python 2.py timeout 0.0ms 0.0MB 0ms 0ms cpython 3.10.7
python 1.py timeout 0.0ms 0.0MB 0ms 0ms pypy 3.8.13
python 1.py timeout 0.0ms 0.0MB 0ms 0ms pyston 3.8.12
python 2.py timeout 0.0ms 0.0MB 0ms 0ms pyston 3.8.12

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1.go 56ms 3.1ms 2.9MB 47ms 0ms go 1.19.1
go 1.go 73ms 0.5ms 0.0MB 60ms 0ms tinygo 0.25.0
python 2.py 278ms 3.4ms 74.0MB 247ms 13ms pypy 3.8.13
python 1.py 577ms 5.3ms 73.4MB 550ms 13ms pypy 3.8.13
python 1.py 1154ms 8.4ms 8.3MB 1140ms 0ms pyston 3.8.12
python 2.py 1573ms 0.7ms 8.2MB 1560ms 0ms pyston 3.8.12
python 1.py timeout 0.0ms 0.0MB 0ms 0ms cpython 3.10.7
python 2.py timeout 0.0ms 0.0MB 0ms 0ms cpython 3.10.7

nsieve

Input: 12

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 2.go 689ms 0.1ms 17.9MB 673ms 0ms tinygo 0.25.0
go 2.go 907ms 5.7ms 20.0MB 890ms 7ms go 1.19.1
go 1.go 996ms 17ms 73.6MB 967ms 13ms go 1.19.1
go 1.go 1089ms 31ms 42.3MB 1073ms 0ms tinygo 0.25.0
python 1.py timeout 0.0ms 0.0MB 0ms 0ms cpython 3.10.7
python 1.py timeout 0.0ms 0.0MB 0ms 0ms pypy 3.8.13
python 1.py timeout 0.0ms 0.0MB 0ms 0ms pyston 3.8.12

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1.go 128ms 5.9ms 22.2MB 110ms 3ms go 1.19.1
go 1.go 132ms 5.6ms 13.6MB 123ms 0ms tinygo 0.25.0
go 2.go 159ms 0.6ms 5.1MB 150ms 0ms tinygo 0.25.0
go 2.go 210ms 2.2ms 7.5MB 197ms 0ms go 1.19.1
python 1.py 1332ms 9.4ms 209.6MB 1267ms 47ms pypy 3.8.13
python 1.py 2644ms 32ms 86.0MB 2583ms 40ms pyston 3.8.12
python 1.py timeout 0.0ms 0.0MB 0ms 0ms cpython 3.10.7

pidigits

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 8.go 1344ms 1.6ms 8.5MB 1327ms 3ms go 1.19.1
python 4.py 2341ms 0.9ms 8.6MB 2297ms 27ms cpython 3.10.7
python 4.py 2416ms 1.3ms 9.0MB 2387ms 13ms pyston 3.8.12
python 4.py 2613ms 14ms 127.7MB 2547ms 50ms pypy 3.8.13

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 8.go 323ms 1.2ms 8.4MB 307ms 3ms go 1.19.1
python 4.py 565ms 1.7ms 8.3MB 550ms 0ms cpython 3.10.7
python 4.py 578ms 0.4ms 8.8MB 560ms 0ms pyston 3.8.12
python 4.py 689ms 24ms 80.0MB 653ms 17ms pypy 3.8.13

regex-redux

Input: 2500000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
python 1.py 3358ms 13ms 275.2MB 3233ms 107ms pypy 3.8.13
go 3.go timeout 0.0ms 0.0MB 0ms 0ms go 1.19.1
go 3.go timeout 0.0ms 0.0MB 0ms 0ms tinygo 0.25.0
python 1.py timeout 0.0ms 0.0MB 0ms 0ms cpython 3.10.7
python 1.py timeout 0.0ms 0.0MB 0ms 0ms pyston 3.8.12

Input: 250000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
python 1.py 472ms 1.0ms 98.2MB 423ms 37ms pypy 3.8.13
python 1.py 773ms 0.9ms 30.2MB 740ms 20ms pyston 3.8.12
python 1.py 827ms 3.5ms 31.1MB 777ms 33ms cpython 3.10.7
go 3.go 2402ms 8.4ms 19.1MB 2383ms 27ms go 1.19.1
go 3.go timeout 0.0ms 0.0MB 0ms 0ms tinygo 0.25.0

secp256k1

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 0-ffi.go 150ms 0.8ms 9.6MB 137ms 3ms go 1.19.1
python 1.py 4427ms 11ms 8.5MB 4410ms 0ms pyston 3.8.12
python 1.py timeout 0.0ms 0.0MB 0ms 0ms cpython 3.10.7
python 1.py timeout 0.0ms 0.0MB 0ms 0ms pypy 3.8.13

Input: 500

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 0-ffi.go 51ms 1.6ms 10.0MB 37ms 0ms go 1.19.1
python 1.py 1122ms 1.1ms 8.4MB 1110ms 0ms pyston 3.8.12
python 1.py 1478ms 7.3ms 7.3MB 1463ms 3ms cpython 3.10.7
python 1.py 1614ms 3.8ms 80.2MB 1580ms 20ms pypy 3.8.13

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 4-m.go 2208ms 2.6ms 5.4MB 4297ms 0ms go 1.19.1
go 1.go 4328ms 2.9ms 5.4MB 4320ms 0ms go 1.19.1
go 1.go timeout 0.0ms 0.0MB 0ms 0ms tinygo 0.25.0
python 8.py timeout 0.0ms 0.0MB 0ms 0ms cpython 3.10.7
python 8.py timeout 0.0ms 0.0MB 0ms 0ms pypy 3.8.13
python 8.py timeout 0.0ms 0.0MB 0ms 0ms pyston 3.8.12

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 4-m.go 562ms 0.5ms 2.9MB 1063ms 0ms go 1.19.1
go 1.go 1087ms 1.7ms 2.9MB 1080ms 0ms go 1.19.1
go 1.go timeout 0.0ms 0.0MB 0ms 0ms tinygo 0.25.0
python 8.py timeout 0.0ms 0.0MB 0ms 0ms cpython 3.10.7
python 8.py timeout 0.0ms 0.0MB 0ms 0ms pypy 3.8.13
python 8.py timeout 0.0ms 0.0MB 0ms 0ms pyston 3.8.12

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 4-m.go 151ms 0.3ms 2.9MB 267ms 3ms go 1.19.1
go 1.go 276ms 3.0ms 2.9MB 267ms 0ms go 1.19.1
go 1.go 1639ms 1.0ms 0.0MB 1630ms 0ms tinygo 0.25.0
python 8-m.py 4187ms 29ms 110.1MB 7277ms 400ms pypy 3.8.13
python 8.py timeout 0.0ms 0.0MB 0ms 0ms cpython 3.10.7
python 8.py timeout 0.0ms 0.0MB 0ms 0ms pyston 3.8.12