Chapel VS Python benchmarks

Current benchmark data was generated on Wed Jan 22 2025, 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
python 1.py 1189ms 1.9ms 95.8MB 1113ms 57ms pypy 3.10.14
chapel 4.chpl 1949ms 7.9ms 66.2MB 1943ms 0ms chpl 1.31.0
chapel 3.chpl 2033ms 5.5ms 66.3MB 2020ms 3ms chpl 1.31.0
python 1.py timeout 0.0ms 40.9MB 4970ms 17ms cpython 3.13.1
python 1.py timeout 0.0ms 40.6MB 4760ms 227ms pyston 3.8.12

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
python 1.py 96ms 2.4ms 68.1MB 67ms 20ms pypy 3.10.14
chapel 4.chpl 191ms 2.9ms 36.4MB 180ms 0ms chpl 1.31.0
chapel 3.chpl 199ms 3.7ms 34.3MB 187ms 3ms chpl 1.31.0
python 1.py 486ms 19ms 11.9MB 457ms 13ms pyston 3.8.12
python 1.py 705ms 9.2ms 12.6MB 693ms 0ms cpython 3.13.1

coro-prime-sieve

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
python 1.py 1197ms 18ms 104.0MB 1157ms 23ms pypy 3.10.14
chapel 1-m.chpl 2257ms 56ms 518.0MB 4400ms 70ms chpl 1.31.0
python 1.py timeout 0.0ms 21.1MB 4977ms 7ms cpython 3.13.1
python 1.py timeout 0.0ms 17.3MB 4977ms 7ms pyston 3.8.12

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 1-m.chpl 192ms 11ms 444.7MB 303ms 37ms chpl 1.31.0
python 1.py 223ms 3.7ms 84.4MB 177ms 27ms pypy 3.10.14
python 1.py 575ms 1.9ms 20.5MB 553ms 7ms cpython 3.13.1
python 1.py 669ms 11ms 16.8MB 647ms 7ms pyston 3.8.12

edigits

Input: 250001

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 1.chpl 80ms 0.6ms 36.5MB 70ms 0ms chpl 1.31.0
python 1.py 246ms 1.1ms 82.8MB 213ms 13ms pypy 3.10.14
python 1.py 362ms 2.1ms 12.7MB 347ms 3ms cpython 3.13.1
python 1.py 1998ms 4.4ms 9.6MB 1980ms 3ms pyston 3.8.12

Input: 100000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 1.chpl 40ms 0.2ms 34.5MB 33ms 3ms chpl 1.31.0
python 1.py 97ms 0.7ms 62.8MB 63ms 20ms pypy 3.10.14
python 1.py 109ms 3.8ms 12.4MB 100ms 0ms cpython 3.13.1
python 1.py 347ms 2.2ms 8.8MB 333ms 0ms pyston 3.8.12

fasta

Input: 2500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 5-m.chpl 112ms 0.7ms 32.4MB 187ms 3ms chpl 1.31.0
python 1.py 1911ms 8.2ms 88.3MB 1857ms 40ms pypy 3.10.14
python 5-m.py 2495ms 45ms 12.5MB 3553ms 1080ms pyston 3.8.12
python 5-m.py 2855ms 12ms 65.0MB 4090ms 777ms pypy 3.10.14
python 1.py 3021ms 48ms 8.1MB 3007ms 0ms pyston 3.8.12
python 5-m.py 3417ms 98ms 13.9MB 4510ms 963ms cpython 3.13.1
python 1.py 4635ms 124ms 8.6MB 4623ms 0ms cpython 3.13.1

Input: 250000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 5.chpl 29ms 0.2ms 32.4MB 23ms 0ms chpl 1.31.0
python 1.py 251ms 0.5ms 63.5MB 217ms 13ms pypy 3.10.14
python 1.py 311ms 2.8ms 8.1MB 300ms 0ms pyston 3.8.12
python 5-m.py 312ms 2.4ms 12.5MB 397ms 143ms pyston 3.8.12
python 5-m.py 402ms 4.6ms 13.8MB 477ms 150ms cpython 3.13.1
python 1.py 471ms 5.4ms 8.8MB 460ms 0ms cpython 3.13.1
python 5-m.py 544ms 2.1ms 64.9MB 817ms 287ms pypy 3.10.14

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
python 1.py 12ms 1.1ms 7.6MB 0ms 0ms pyston 3.8.12
python 1.py 14ms 1.2ms 8.5MB 10ms 0ms cpython 3.13.1
chapel 1.chpl 16ms 0.5ms 32.8MB 7ms 3ms chpl 1.31.0
python 1.py 28ms 0.6ms 51.0MB 10ms 8ms pypy 3.10.14

knucleotide

Input: 2500000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 3-m.chpl 750ms 2.0ms 101.0MB 1407ms 10ms chpl 1.31.0
python 3-m.py 2529ms 31ms 138.0MB 8620ms 330ms pypy 3.10.14
python 3-m.py 3123ms 17ms 33.9MB 11820ms 127ms pyston 3.8.12
python 3.py timeout 0.0ms 35.1MB 97ms 13ms cpython 3.13.1

Input: 250000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 3-m.chpl 122ms 1.7ms 81.1MB 197ms 10ms chpl 1.31.0
python 3-m.py 395ms 0.9ms 15.7MB 1303ms 67ms pyston 3.8.12
python 3-m.py 398ms 3.2ms 77.1MB 1017ms 157ms pypy 3.10.14
python 3-m.py 656ms 8.0ms 17.2MB 2300ms 57ms cpython 3.13.1

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 2.chpl 329ms 2.4ms 32.8MB 320ms 0ms chpl 1.31.0
python 2.py 1366ms 23ms 59.8MB 1340ms 10ms pypy 3.10.14
python 1.py 2633ms 17ms 56.6MB 2607ms 13ms pypy 3.10.14
python 1.py timeout 0.0ms 8.6MB 4983ms 3ms cpython 3.13.1
python 2.py timeout 0.0ms 8.8MB 4990ms 0ms cpython 3.13.1
python 1.py timeout 0.0ms 8.3MB 4983ms 3ms pyston 3.8.12
python 2.py timeout 0.0ms 8.1MB 4987ms 0ms pyston 3.8.12

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 2.chpl 52ms 0.4ms 32.8MB 40ms 7ms chpl 1.31.0
python 2.py 177ms 2.3ms 57.6MB 150ms 13ms pypy 3.10.14
python 1.py 306ms 2.6ms 56.6MB 280ms 10ms pypy 3.10.14
python 1.py 921ms 5.6ms 8.3MB 907ms 0ms pyston 3.8.12
python 2.py 1297ms 37ms 8.3MB 1283ms 0ms pyston 3.8.12
python 1.py 2982ms 117ms 8.6MB 2973ms 0ms cpython 3.13.1
python 2.py 3119ms 42ms 8.8MB 3103ms 0ms cpython 3.13.1

pidigits

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 2.chpl 452ms 1.6ms 34.4MB 440ms 0ms chpl 1.31.0
python 4.py 1907ms 9.4ms 8.9MB 1860ms 30ms pyston 3.8.12
python 4.py 1988ms 11ms 9.4MB 1930ms 40ms cpython 3.13.1
python 4.py 2128ms 6.9ms 89.0MB 2090ms 23ms pypy 3.10.14

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 2.chpl 121ms 1.3ms 34.4MB 113ms 0ms chpl 1.31.0
python 4.py 451ms 1.8ms 8.6MB 440ms 0ms pyston 3.8.12
python 4.py 470ms 4.4ms 9.3MB 457ms 0ms cpython 3.13.1
python 4.py 542ms 7.0ms 83.4MB 507ms 17ms pypy 3.10.14

regex-redux

Input: 2500000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 3.chpl 1392ms 7.7ms 224.2MB 1343ms 37ms chpl 1.31.0
python 1.py 2225ms 7.0ms 243.0MB 2163ms 47ms pypy 3.10.14
python 1.py 4757ms 33ms 226.3MB 4560ms 180ms pyston 3.8.12
python 1.py timeout 0.0ms 108.7MB 4957ms 30ms cpython 3.13.1

Input: 250000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 3.chpl 168ms 1.8ms 52.9MB 153ms 7ms chpl 1.31.0
python 1.py 334ms 2.9ms 85.5MB 293ms 27ms pypy 3.10.14
python 1.py 497ms 5.0ms 30.3MB 460ms 23ms pyston 3.8.12
python 1.py 621ms 3.4ms 31.0MB 593ms 10ms cpython 3.13.1

secp256k1

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 1.chpl 1187ms 3.1ms 33.1MB 1177ms 0ms chpl 1.31.0
python 1.py 3144ms 17ms 8.4MB 3130ms 0ms pyston 3.8.12
python 1.py 3691ms 14ms 74.6MB 3657ms 17ms pypy 3.10.14
python 1.py 3791ms 31ms 8.8MB 3773ms 0ms cpython 3.13.1

Input: 500

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 1.chpl 318ms 2.7ms 33.1MB 307ms 3ms chpl 1.31.0
python 1.py 803ms 5.5ms 8.3MB 787ms 0ms pyston 3.8.12
python 1.py 972ms 12ms 8.8MB 957ms 0ms cpython 3.13.1
python 1.py 1037ms 13ms 67.6MB 1010ms 13ms pypy 3.10.14

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 1-m.chpl 1913ms 0.6ms 32.8MB 3787ms 0ms chpl 1.31.0
chapel 1.chpl 3715ms 5.7ms 32.8MB 3700ms 0ms chpl 1.31.0
python 8.py timeout 0.0ms 16.6MB 63ms 0ms cpython 3.13.1
python 8.py timeout 0.0ms 99.4MB 853ms 167ms pypy 3.10.14
python 8.py timeout 0.0ms 18.1MB 77ms 17ms pyston 3.8.12

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 1-m.chpl 497ms 2.2ms 32.9MB 960ms 0ms chpl 1.31.0
chapel 1.chpl 945ms 2.0ms 32.8MB 937ms 0ms chpl 1.31.0
python 8.py timeout 0.0ms 16.5MB 113ms 17ms cpython 3.13.1
python 8.py timeout 0.0ms 99.1MB 1567ms 470ms pypy 3.10.14
python 8.py timeout 0.0ms 17.6MB 137ms 33ms pyston 3.8.12

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 1-m.chpl 140ms 2.4ms 32.9MB 247ms 0ms chpl 1.31.0
chapel 1.chpl 255ms 3.6ms 32.8MB 247ms 3ms chpl 1.31.0
python 8-m.py 2021ms 18ms 94.9MB 6423ms 333ms pypy 3.10.14
python 8.py timeout 0.0ms 16.1MB 233ms 53ms cpython 3.13.1
python 8.py timeout 0.0ms 15.5MB 447ms 113ms pyston 3.8.12