Python VS OCaml 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
ocaml 1.ml timeout 0.0ms 139.4MB 4927ms 50ms ocaml 5.0.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
ocaml 1.ml 395ms 6.2ms 22.9MB 363ms 13ms ocaml 5.0.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
python 1.py 1472ms 22ms 227.4MB 1350ms 107ms pypy 3.9.16
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
python 1.py 312ms 5.3ms 87.6MB 267ms 27ms pypy 3.9.16
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
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
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

fasta

Input: 2500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ocaml 6.ml 450ms 2.9ms 22.7MB 433ms 3ms ocaml 5.0.0
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
ocaml 6.ml 50ms 0.4ms 4.9MB 37ms 0ms ocaml 5.0.0
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
ocaml 1.ml 2.6ms 0.9ms 2.9MB 0ms 0ms ocaml 5.0.0
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
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
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
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
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
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
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
python 2.py 284ms 4.9ms 70.9MB 253ms 13ms pypy 3.9.16
ocaml 1.ml 290ms 2.9ms 6.7MB 277ms 0ms ocaml 5.0.0
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
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
ocaml 1.ml 860ms 8.8ms 6.8MB 847ms 0ms ocaml 5.0.0
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
ocaml 1.ml 130ms 0.3ms 5.9MB 120ms 0ms ocaml 5.0.0
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

merkletrees

Input: 17

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ocaml 1.ml 2018ms 8.8ms 69.1MB 1967ms 33ms ocaml 5.0.0
python 1.py 2976ms 31ms 230.6MB 2797ms 163ms pypy 3.9.16
ocaml 2.ml 3866ms 14ms 74.3MB 3803ms 47ms ocaml 5.0.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
ocaml 1.ml 296ms 3.1ms 25.8MB 263ms 10ms ocaml 5.0.0
python 1.py 453ms 12ms 149.9MB 370ms 63ms pypy 3.9.16
ocaml 2.ml 685ms 5.7ms 30.2MB 653ms 13ms ocaml 5.0.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
ocaml 1.ml 668ms 18ms 2.9MB 653ms 0ms ocaml 5.0.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
ocaml 1.ml 74ms 3.1ms 2.9MB 63ms 0ms ocaml 5.0.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
ocaml 1.ml 2737ms 6.5ms 550.4MB 2570ms 153ms ocaml 5.0.0
ocaml 2.ml 3263ms 200ms 19.0MB 3240ms 7ms ocaml 5.0.0
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
ocaml 1.ml 557ms 15ms 140.2MB 507ms 33ms ocaml 5.0.0
ocaml 2.ml 811ms 68ms 9.1MB 797ms 0ms ocaml 5.0.0
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
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
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
ocaml 2.ml timeout 0.0ms 125.5MB 4923ms 50ms ocaml 5.0.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
ocaml 2.ml 818ms 6.0ms 52.5MB 780ms 20ms ocaml 5.0.0
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

secp256k1

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
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
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
ocaml 2.ml timeout 0.0ms 4.0MB 4983ms 0ms ocaml 5.0.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
ocaml 2.ml 1802ms 7.5ms 3.6MB 1787ms 0ms ocaml 5.0.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
ocaml 2.ml 475ms 16ms 3.4MB 460ms 0ms ocaml 5.0.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