Go VS Python benchmarks

Current benchmark data was generated on Wed Feb 08 2023, full log can be found HERE

CONTRIBUTIONS are WELCOME!

[x86_64][2 cores] Intel(R) Xeon(R) Platinum 8171M 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 1922ms 8.8ms 217.4MB 1770ms 137ms pypy 3.9.16
go 1.go 3847ms 17ms 45.6MB 5503ms 83ms go 1.19.5
go 1.go timeout 0.0ms 39.4MB 4970ms 7ms tinygo 0.25.0
python 1.py timeout 0.0ms 40.8MB 4963ms 17ms cpython 3.11.2
python 1.py timeout 0.0ms 40.3MB 4950ms 27ms pyston 3.8.12

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
python 1.py 148ms 2.4ms 74.3MB 113ms 13ms pypy 3.9.16
go 1.go 324ms 2.4ms 8.3MB 417ms 3ms go 1.19.5
go 1.go 438ms 0.7ms 5.9MB 423ms 0ms tinygo 0.25.0
python 1.py 776ms 2.6ms 11.9MB 753ms 7ms pyston 3.8.12
python 1.py 1144ms 6.2ms 12.5MB 1120ms 3ms cpython 3.11.2

coro-prime-sieve

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1-m.go 984ms 210ms 13.6MB 1910ms 0ms go 1.19.5
python 1.py 1472ms 22ms 227.4MB 1350ms 107ms pypy 3.9.16
go 1.go 2170ms 13ms 256.7MB 2087ms 63ms tinygo 0.25.0
python 1.py timeout 0.0ms 20.1MB 4973ms 7ms cpython 3.11.2
python 1.py timeout 0.0ms 17.1MB 4977ms 3ms pyston 3.8.12

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1-m.go 73ms 13ms 5.4MB 117ms 0ms go 1.19.5
python 1.py 312ms 5.3ms 87.6MB 267ms 27ms pypy 3.9.16
go 1.go 346ms 2.1ms 65.6MB 307ms 23ms tinygo 0.25.0
python 1.py 913ms 1.0ms 19.9MB 897ms 3ms cpython 3.11.2
python 1.py 989ms 2.8ms 16.9MB 973ms 0ms pyston 3.8.12

edigits

Input: 250001

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1.go 197ms 3.5ms 8.3MB 180ms 3ms go 1.19.5
python 1.py 706ms 5.1ms 78.4MB 660ms 27ms pypy 3.9.16
python 1.py 1670ms 7.4ms 10.1MB 1657ms 0ms cpython 3.11.2
python 1.py 2754ms 4.2ms 9.6MB 2730ms 3ms pyston 3.8.12

Input: 100000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1.go 58ms 1.3ms 8.9MB 50ms 0ms go 1.19.5
python 1.py 196ms 1.0ms 73.2MB 163ms 13ms pypy 3.9.16
python 1.py 310ms 1.7ms 9.4MB 297ms 3ms cpython 3.11.2
python 1.py 482ms 2.3ms 8.9MB 463ms 3ms pyston 3.8.12

fannkuch-redux

Input: 11

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 3-m.go 1448ms 2.7ms 5.0MB 2787ms 7ms go 1.19.5
go 3.go 3217ms 6.8ms 48.9MB 3190ms 7ms tinygo 0.25.0

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 3-m.go 144ms 2.5ms 5.0MB 220ms 0ms go 1.19.5
go 3.go 353ms 3.4ms 49.9MB 333ms 7ms tinygo 0.25.0

fasta

Input: 2500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 3-m.go 251ms 0.7ms 2.9MB 450ms 0ms go 1.19.5
python 5-m.py 3319ms 2874ms 76.1MB 6847ms 1390ms pypy 3.9.16
python 1.py 3477ms 32ms 84.7MB 3433ms 23ms pypy 3.9.16
python 5-m.py 3960ms 31ms 12.5MB 5733ms 1390ms pyston 3.8.12
python 1.py 4684ms 24ms 7.9MB 4667ms 0ms pyston 3.8.12
python 5-m.py 4713ms 13ms 13.6MB 6807ms 1347ms cpython 3.11.2
python 1.py timeout 0.0ms 8.6MB 4977ms 3ms cpython 3.11.2

Input: 250000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 3.go 32ms 0.4ms 2.9MB 40ms 0ms go 1.19.5
python 1.py 425ms 2.0ms 73.7MB 383ms 23ms pypy 3.9.16
python 5-m.py 479ms 2.6ms 12.6MB 630ms 173ms pyston 3.8.12
python 1.py 495ms 15ms 7.9MB 480ms 0ms pyston 3.8.12
python 5-m.py 559ms 1.6ms 13.5MB 737ms 167ms cpython 3.11.2
python 1.py 715ms 1.6ms 8.7MB 700ms 0ms cpython 3.11.2
python 5-m.py 932ms 8.4ms 76.0MB 1000ms 530ms pypy 3.9.16

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1.go 1.9ms 0.9ms 0.2MB 0ms 0ms tinygo 0.25.0
go 1.go 3.4ms 0.5ms 2.9MB 0ms 0ms go 1.19.5
python 1.py 15ms 0.7ms 7.3MB 10ms 0ms pyston 3.8.12
python 1.py 16ms 1.3ms 8.5MB 10ms 0ms cpython 3.11.2
python 1.py 39ms 0.9ms 52.8MB 12ms 12ms pypy 3.9.16

http-server

Input: 3000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1-http2.go 207ms 4.6ms 58.5MB 300ms 50ms go 1.19.5
go 1-m.go 699ms 31ms 164.2MB 677ms 470ms go 1.19.5
go 2-m.go 837ms 102ms 180.4MB 803ms 630ms go 1.19.5
python 1.py 1999ms 21ms 33.2MB 1513ms 1027ms pyston 3.8.12
python 1.py 2432ms 32ms 31.7MB 1927ms 1063ms cpython 3.11.2
python 1.py timeout 0.0ms 123.9MB 3880ms 1013ms pypy 3.9.16

Input: 500

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1-http2.go 49ms 1.1ms 25.1MB 47ms 13ms go 1.19.5
go 2.go 131ms 41ms 39.1MB 93ms 50ms go 1.19.5
go 1.go 157ms 5.5ms 37.1MB 103ms 90ms go 1.19.5
python 1.py 444ms 7.4ms 27.9MB 337ms 183ms pyston 3.8.12
python 1.py 486ms 14ms 24.9MB 383ms 177ms cpython 3.11.2
python 1.py 1219ms 33ms 95.5MB 953ms 227ms pypy 3.9.16

json-serde

Input: sample 5000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 2-ffi.go 83ms 6.6ms 42.1MB 60ms 17ms go 1.19.5
go 1.go 213ms 3.5ms 18.8MB 197ms 3ms go 1.19.5
python 1.py 315ms 5.0ms 38.8MB 260ms 37ms pyston 3.8.12
python 1.py 326ms 13ms 41.3MB 293ms 13ms cpython 3.11.2
python 1.py 464ms 7.3ms 98.6MB 400ms 47ms pypy 3.9.16

Input: canada 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 2-ffi.go 483ms 20ms 182.5MB 440ms 133ms go 1.19.5
go 1.go 1288ms 8.1ms 105.2MB 1253ms 83ms go 1.19.5
python 1.py 2904ms 9.6ms 222.9MB 2743ms 143ms cpython 3.11.2
python 1.py 2943ms 16ms 220.7MB 2763ms 163ms pyston 3.8.12
python 1.py 3080ms 55ms 239.3MB 2950ms 113ms pypy 3.9.16

knucleotide

Input: 2500000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 7-m.go 1633ms 7.4ms 41.6MB 3007ms 40ms go 1.19.5
python 3-m.py 4923ms 24ms 209.9MB 8630ms 467ms pypy 3.9.16
python 3.py timeout 0.0ms 35.1MB 100ms 27ms cpython 3.11.2
python 3.py timeout 0.0ms 34.2MB 80ms 27ms 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 271ms 4.2ms 25.3MB 420ms 20ms go 1.19.5
python 3-m.py 686ms 12ms 86.1MB 1000ms 143ms pypy 3.9.16
python 3-m.py 737ms 14ms 17.6MB 1283ms 47ms pyston 3.8.12
python 3-m.py 1024ms 9.7ms 16.9MB 1843ms 43ms cpython 3.11.2

lru

Input: 1000 1000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 3.go 195ms 4.6ms 0.3MB 183ms 0ms tinygo 0.25.0
go 3.go 201ms 2.4ms 3.4MB 187ms 0ms go 1.19.5
python 2.py 284ms 4.9ms 70.9MB 253ms 13ms pypy 3.9.16
python 1.py 313ms 4.7ms 72.0MB 270ms 27ms pypy 3.9.16
python 1.py 1120ms 2.0ms 9.0MB 1107ms 0ms pyston 3.8.12
python 2.py 1293ms 9.6ms 8.7MB 1273ms 3ms pyston 3.8.12
python 1.py 1484ms 19ms 9.4MB 1467ms 0ms cpython 3.11.2
python 2.py 1699ms 14ms 9.1MB 1687ms 0ms cpython 3.11.2

Input: 1000 3000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 3.go 566ms 1.0ms 0.3MB 553ms 0ms tinygo 0.25.0
go 3.go 589ms 3.6ms 3.4MB 573ms 0ms go 1.19.5
python 2.py 667ms 16ms 71.1MB 630ms 23ms pypy 3.9.16
python 1.py 711ms 2.5ms 72.3MB 680ms 13ms pypy 3.9.16
python 2-m.py 3295ms 2854ms 9.2MB 4943ms 0ms cpython 3.11.2
python 1.py 3305ms 23ms 9.0MB 3287ms 0ms pyston 3.8.12
python 2.py 3823ms 41ms 8.6MB 3810ms 0ms pyston 3.8.12
python 1.py 4427ms 18ms 9.3MB 4410ms 0ms cpython 3.11.2

Input: 100 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 3.go 99ms 0.4ms 0.0MB 90ms 0ms tinygo 0.25.0
go 3.go 108ms 3.8ms 4.1MB 100ms 0ms go 1.19.5
python 2.py 188ms 6.7ms 71.4MB 157ms 20ms pypy 3.9.16
python 1.py 206ms 1.7ms 72.5MB 170ms 20ms pypy 3.9.16
python 1.py 540ms 9.0ms 8.7MB 527ms 0ms pyston 3.8.12
python 2.py 602ms 4.0ms 8.2MB 583ms 0ms pyston 3.8.12
python 1.py 707ms 4.4ms 8.7MB 693ms 0ms cpython 3.11.2
python 2.py 854ms 5.2ms 8.4MB 837ms 0ms cpython 3.11.2

mandelbrot

Input: 5000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1.go 4741ms 38ms 7.4MB 4710ms 3ms go 1.19.5
go 1.go timeout 0.0ms 5.4MB 4977ms 0ms tinygo 0.25.0

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1.go 199ms 1.3ms 2.9MB 190ms 0ms go 1.19.5
go 1.go 390ms 1.4ms 0.0MB 380ms 0ms tinygo 0.25.0

merkletrees

Input: 17

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1.go 2523ms 14ms 38.2MB 3530ms 67ms go 1.19.5
go 2.go 2861ms 21ms 45.1MB 4040ms 80ms go 1.19.5
python 1.py 2976ms 31ms 230.6MB 2797ms 163ms pypy 3.9.16
go 1.go 4946ms 23ms 212.6MB 4880ms 50ms tinygo 0.25.0
go 2.go timeout 0.0ms 51.3MB 4973ms 3ms tinygo 0.25.0
python 1.py timeout 0.0ms 92.9MB 4933ms 47ms cpython 3.11.2
python 1.py timeout 0.0ms 130.2MB 4930ms 50ms pyston 3.8.12

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
python 1.py 453ms 12ms 149.9MB 370ms 63ms pypy 3.9.16
go 1.go 535ms 12ms 12.1MB 713ms 20ms go 1.19.5
go 2.go 606ms 2.8ms 13.4MB 837ms 7ms go 1.19.5
go 1.go 864ms 21ms 51.9MB 837ms 7ms tinygo 0.25.0
go 2.go 1659ms 8.8ms 39.3MB 1637ms 7ms tinygo 0.25.0
python 1.py timeout 0.0ms 37.3MB 4967ms 17ms cpython 3.11.2
python 1.py timeout 0.0ms 41.4MB 4967ms 13ms pyston 3.8.12

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1.go 599ms 3.1ms 2.9MB 587ms 0ms go 1.19.5
go 1.go 839ms 2.3ms 2.0MB 830ms 0ms tinygo 0.25.0
python 2.py 2414ms 33ms 71.4MB 2383ms 17ms pypy 3.9.16
python 1.py 4354ms 39ms 70.3MB 4317ms 17ms pypy 3.9.16
python 1.py timeout 0.0ms 8.4MB 4983ms 0ms cpython 3.11.2
python 2.py timeout 0.0ms 8.6MB 4987ms 0ms cpython 3.11.2
python 1.py timeout 0.0ms 8.4MB 4983ms 3ms pyston 3.8.12
python 2.py timeout 0.0ms 7.9MB 4973ms 7ms pyston 3.8.12

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1.go 65ms 1.5ms 2.9MB 50ms 0ms go 1.19.5
go 1.go 84ms 1.0ms 0.0MB 73ms 0ms tinygo 0.25.0
python 2.py 309ms 3.3ms 71.0MB 277ms 17ms pypy 3.9.16
python 1.py 499ms 4.8ms 70.3MB 460ms 20ms pypy 3.9.16
python 1.py 1397ms 19ms 8.3MB 1380ms 0ms pyston 3.8.12
python 2.py 1891ms 7.9ms 7.9MB 1873ms 3ms pyston 3.8.12
python 1.py 3917ms 146ms 8.4MB 3903ms 0ms cpython 3.11.2
python 2.py 4128ms 39ms 8.6MB 4107ms 0ms cpython 3.11.2

nsieve

Input: 12

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 2.go 808ms 5.4ms 17.6MB 793ms 0ms tinygo 0.25.0
go 1.go 986ms 32ms 73.7MB 957ms 17ms go 1.19.5
go 1.go 1060ms 43ms 43.8MB 1027ms 10ms tinygo 0.25.0
go 2.go 1095ms 9.3ms 20.0MB 1073ms 13ms go 1.19.5
python 1.py timeout 0.0ms 321.1MB 4883ms 97ms cpython 3.11.2
python 2.py timeout 0.0ms 633.7MB 4543ms 437ms cpython 3.11.2
python 1.py timeout 0.0ms 382.8MB 4817ms 160ms pypy 3.9.16
python 2.py timeout 0.0ms 984.6MB 4567ms 407ms pypy 3.9.16
python 1.py timeout 0.0ms 320.4MB 4907ms 73ms pyston 3.8.12
python 2.py timeout 0.0ms 633.0MB 4470ms 513ms pyston 3.8.12

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1.go 142ms 8.0ms 22.2MB 120ms 3ms go 1.19.5
go 1.go 151ms 0.6ms 13.4MB 140ms 0ms tinygo 0.25.0
go 2.go 198ms 10ms 5.6MB 173ms 0ms tinygo 0.25.0
go 2.go 259ms 2.0ms 8.0MB 250ms 0ms go 1.19.5
python 1.py 1274ms 13ms 207.0MB 1197ms 60ms pypy 3.9.16
python 2.py 1351ms 12ms 164.3MB 1267ms 73ms pyston 3.8.12
python 2.py 2045ms 5.7ms 164.8MB 1947ms 80ms cpython 3.11.2
python 2.py 2170ms 38ms 210.3MB 2020ms 130ms pypy 3.9.16
python 1.py 2641ms 32ms 86.0MB 2583ms 40ms pyston 3.8.12
python 1.py 4357ms 11ms 86.7MB 4297ms 40ms cpython 3.11.2

pidigits

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 8.go 1588ms 15ms 8.5MB 1560ms 10ms go 1.19.5
python 4.py 2886ms 4.0ms 9.0MB 2840ms 27ms pyston 3.8.12
python 4.py 2892ms 0.9ms 9.5MB 2843ms 33ms cpython 3.11.2
python 4.py 2991ms 35ms 125.0MB 2913ms 57ms pypy 3.9.16

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 8.go 367ms 3.4ms 8.5MB 350ms 3ms go 1.19.5
python 4.py 705ms 18ms 9.1MB 687ms 0ms cpython 3.11.2
python 4.py 713ms 23ms 8.8MB 700ms 0ms pyston 3.8.12
python 4.py 774ms 10ms 77.2MB 730ms 23ms pypy 3.9.16

regex-redux

Input: 2500000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
python 1.py 3909ms 20ms 273.0MB 3747ms 143ms pypy 3.9.16
go 3.go timeout 0.0ms 110.6MB 4970ms 127ms go 1.19.5
go 3.go timeout 0.0ms 120.5MB 4950ms 30ms tinygo 0.25.0
python 1.py timeout 0.0ms 106.7MB 4930ms 57ms cpython 3.11.2
python 1.py timeout 0.0ms 108.8MB 4920ms 60ms pyston 3.8.12

Input: 250000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
python 1.py 537ms 4.5ms 95.5MB 483ms 40ms pypy 3.9.16
python 1.py 932ms 27ms 30.5MB 890ms 23ms pyston 3.8.12
python 1.py 982ms 2.5ms 31.9MB 937ms 30ms cpython 3.11.2
go 3.go 2924ms 14ms 18.5MB 2903ms 30ms go 1.19.5
go 3.go timeout 0.0ms 30.0MB 4983ms 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 185ms 2.9ms 10.1MB 170ms 7ms go 1.19.5
python 1.py timeout 0.0ms 8.4MB 4987ms 0ms cpython 3.11.2
python 1.py timeout 0.0ms 78.4MB 4950ms 27ms pypy 3.9.16
python 1.py timeout 0.0ms 8.4MB 4987ms 0ms pyston 3.8.12

Input: 500

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 0-ffi.go 61ms 3.2ms 9.6MB 50ms 0ms go 1.19.5
python 1.py 1339ms 1.6ms 8.3MB 1323ms 0ms pyston 3.8.12
python 1.py 1443ms 2.4ms 8.4MB 1433ms 0ms cpython 3.11.2
python 1.py 1749ms 4.6ms 74.8MB 1720ms 13ms pypy 3.9.16

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 4-m.go 2681ms 27ms 4.9MB 5153ms 3ms go 1.19.5
go 1.go timeout 0.0ms 5.4MB 4983ms 3ms go 1.19.5
go 1.go timeout 0.0ms 2.4MB 4983ms 0ms tinygo 0.25.0
python 8.py timeout 0.0ms 16.5MB 60ms 17ms cpython 3.11.2
python 8.py timeout 0.0ms 98.9MB 643ms 93ms pypy 3.9.16
python 8.py timeout 0.0ms 17.5MB 57ms 20ms pyston 3.8.12

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 4-m.go 674ms 7.1ms 3.4MB 1277ms 0ms go 1.19.5
go 1.go 1330ms 2.8ms 2.9MB 1323ms 0ms go 1.19.5
go 1.go timeout 0.0ms 0.0MB 4983ms 0ms tinygo 0.25.0
python 8.py timeout 0.0ms 14.3MB 133ms 20ms cpython 3.11.2
python 8.py timeout 0.0ms 103.4MB 1023ms 183ms pypy 3.9.16
python 8.py timeout 0.0ms 17.1MB 150ms 33ms pyston 3.8.12

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 4-m.go 182ms 3.8ms 2.9MB 313ms 0ms go 1.19.5
go 1.go 336ms 2.1ms 2.9MB 327ms 0ms go 1.19.5
go 1.go 1953ms 7.3ms 0.0MB 1940ms 0ms tinygo 0.25.0
python 8-m.py 4367ms 34ms 102.1MB 7580ms 460ms pypy 3.9.16
python 8.py timeout 0.0ms 15.9MB 243ms 33ms cpython 3.11.2
python 8.py timeout 0.0ms 17.1MB 333ms 63ms pyston 3.8.12