Chapel VS Python benchmarks

Current benchmark data was generated on Mon Dec 30 2024, 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 1166ms 9.2ms 95.7MB 1100ms 50ms pypy 3.10.14
chapel 4.chpl 1953ms 6.1ms 66.3MB 1937ms 7ms chpl 1.31.0
chapel 3.chpl 2024ms 5.9ms 66.3MB 2007ms 7ms chpl 1.31.0
python 1.py timeout 0.0ms 40.9MB 4967ms 17ms cpython 3.13.1
python 1.py timeout 0.0ms 40.5MB 4760ms 223ms 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.2ms 67.9MB 63ms 20ms pypy 3.10.14
chapel 4.chpl 191ms 1.6ms 36.4MB 177ms 3ms chpl 1.31.0
chapel 3.chpl 194ms 1.4ms 36.4MB 187ms 0ms chpl 1.31.0
python 1.py 474ms 5.7ms 11.9MB 450ms 7ms pyston 3.8.12
python 1.py 709ms 7.3ms 12.6MB 697ms 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 1177ms 7.4ms 102.5MB 1120ms 40ms pypy 3.10.14
chapel 1-m.chpl 2294ms 56ms 508.1MB 4467ms 67ms chpl 1.31.0
python 1.py timeout 0.0ms 21.3MB 4973ms 7ms cpython 3.13.1
python 1.py timeout 0.0ms 17.3MB 4980ms 3ms pyston 3.8.12

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 1-m.chpl 189ms 0.8ms 418.9MB 300ms 37ms chpl 1.31.0
python 1.py 218ms 5.6ms 84.5MB 167ms 37ms pypy 3.10.14
python 1.py 587ms 33ms 20.5MB 567ms 3ms cpython 3.13.1
python 1.py 656ms 19ms 16.8MB 630ms 3ms pyston 3.8.12

edigits

Input: 250001

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 1.chpl 79ms 0.3ms 36.5MB 67ms 3ms chpl 1.31.0
python 1.py 246ms 0.5ms 82.9MB 210ms 17ms pypy 3.10.14
python 1.py 360ms 0.4ms 12.5MB 343ms 3ms cpython 3.13.1
python 1.py 1994ms 2.7ms 9.6MB 1980ms 0ms 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.5ms 34.5MB 30ms 0ms chpl 1.31.0
python 1.py 97ms 0.8ms 62.8MB 77ms 10ms pypy 3.10.14
python 1.py 112ms 5.9ms 12.0MB 100ms 0ms cpython 3.13.1
python 1.py 345ms 0.6ms 8.8MB 330ms 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.8ms 32.4MB 197ms 0ms chpl 1.31.0
python 1.py 1896ms 11ms 88.3MB 1847ms 33ms pypy 3.10.14
python 5-m.py 2474ms 26ms 12.5MB 3627ms 973ms pyston 3.8.12
python 5-m.py 2831ms 4.6ms 64.9MB 4040ms 807ms pypy 3.10.14
python 1.py 2999ms 24ms 8.1MB 2983ms 0ms pyston 3.8.12
python 5-m.py 3390ms 14ms 13.9MB 4597ms 887ms cpython 3.13.1
python 1.py 4550ms 39ms 8.6MB 4537ms 0ms cpython 3.13.1

Input: 250000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 5.chpl 28ms 0.3ms 32.4MB 17ms 3ms chpl 1.31.0
python 1.py 252ms 5.8ms 63.5MB 227ms 17ms pypy 3.10.14
python 1.py 310ms 1.9ms 8.1MB 297ms 0ms pyston 3.8.12
python 5-m.py 311ms 4.2ms 12.5MB 410ms 137ms pyston 3.8.12
python 5-m.py 397ms 2.8ms 13.8MB 483ms 127ms cpython 3.13.1
python 1.py 494ms 18ms 8.6MB 480ms 0ms cpython 3.13.1
python 5-m.py 539ms 0.3ms 65.0MB 810ms 283ms pypy 3.10.14

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
python 1.py 11ms 1.0ms 7.6MB 0ms 0ms pyston 3.8.12
python 1.py 13ms 1.3ms 8.6MB 10ms 0ms cpython 3.13.1
chapel 1.chpl 17ms 2.0ms 32.8MB 10ms 0ms chpl 1.31.0
python 1.py 28ms 0.7ms 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 747ms 2.4ms 90.9MB 1403ms 7ms chpl 1.31.0
python 3-m.py 2278ms 16ms 137.7MB 7713ms 340ms pypy 3.10.14
python 3-m.py 3081ms 29ms 34.0MB 11623ms 120ms pyston 3.8.12
python 3.py timeout 0.0ms 35.2MB 90ms 23ms 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 121ms 0.7ms 80.9MB 200ms 3ms chpl 1.31.0
python 3-m.py 377ms 2.5ms 77.5MB 937ms 173ms pypy 3.10.14
python 3-m.py 392ms 3.6ms 17.7MB 1273ms 83ms pyston 3.8.12
python 3-m.py 645ms 2.8ms 17.1MB 2247ms 77ms 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.7ms 32.9MB 317ms 3ms chpl 1.31.0
python 2.py 1353ms 12ms 59.9MB 1337ms 3ms pypy 3.10.14
python 1.py 2633ms 14ms 56.6MB 2607ms 13ms pypy 3.10.14
python 1.py timeout 0.0ms 8.6MB 4990ms 0ms cpython 3.13.1
python 2.py timeout 0.0ms 8.8MB 4987ms 0ms cpython 3.13.1
python 1.py timeout 0.0ms 8.3MB 4983ms 0ms pyston 3.8.12
python 2.py timeout 0.0ms 8.1MB 4983ms 0ms pyston 3.8.12

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 2.chpl 51ms 0.3ms 32.8MB 40ms 3ms chpl 1.31.0
python 2.py 177ms 3.9ms 57.6MB 153ms 10ms pypy 3.10.14
python 1.py 305ms 2.4ms 56.6MB 283ms 7ms pypy 3.10.14
python 1.py 946ms 19ms 8.3MB 937ms 0ms pyston 3.8.12
python 2.py 1298ms 20ms 8.1MB 1280ms 0ms pyston 3.8.12
python 1.py 2997ms 82ms 8.8MB 2987ms 0ms cpython 3.13.1
python 2.py 3190ms 235ms 8.8MB 3177ms 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 450ms 0.3ms 32.4MB 440ms 0ms chpl 1.31.0
python 4.py 1916ms 8.2ms 8.9MB 1867ms 33ms pyston 3.8.12
python 4.py 1980ms 6.9ms 9.4MB 1907ms 53ms cpython 3.13.1
python 4.py 2133ms 8.9ms 89.1MB 2097ms 17ms pypy 3.10.14

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 2.chpl 121ms 0.6ms 34.4MB 110ms 7ms chpl 1.31.0
python 4.py 454ms 5.7ms 8.6MB 440ms 0ms pyston 3.8.12
python 4.py 467ms 0.8ms 9.0MB 453ms 0ms cpython 3.13.1
python 4.py 544ms 14ms 83.6MB 503ms 23ms 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 1393ms 10ms 224.2MB 1353ms 33ms chpl 1.31.0
python 1.py 2230ms 6.1ms 244.1MB 2163ms 50ms pypy 3.10.14
python 1.py 4730ms 18ms 226.2MB 4550ms 160ms pyston 3.8.12
python 1.py timeout 0.0ms 111.6MB 4950ms 37ms cpython 3.13.1

Input: 250000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 3.chpl 169ms 1.9ms 52.9MB 150ms 10ms chpl 1.31.0
python 1.py 330ms 1.4ms 84.8MB 287ms 30ms pypy 3.10.14
python 1.py 492ms 4.4ms 30.4MB 460ms 17ms pyston 3.8.12
python 1.py 628ms 2.8ms 31.0MB 590ms 27ms cpython 3.13.1

secp256k1

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 1.chpl 1184ms 7.2ms 33.0MB 1177ms 0ms chpl 1.31.0
python 1.py 3167ms 4.3ms 8.4MB 3150ms 0ms pyston 3.8.12
python 1.py 3716ms 30ms 74.6MB 3673ms 27ms pypy 3.10.14
python 1.py 3799ms 33ms 8.8MB 3787ms 0ms cpython 3.13.1

Input: 500

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 1.chpl 319ms 14ms 33.0MB 313ms 0ms chpl 1.31.0
python 1.py 799ms 1.5ms 8.3MB 783ms 0ms pyston 3.8.12
python 1.py 964ms 6.9ms 8.6MB 950ms 0ms cpython 3.13.1
python 1.py 1028ms 8.3ms 67.5MB 1000ms 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 1923ms 22ms 32.9MB 3807ms 3ms chpl 1.31.0
chapel 1.chpl 3722ms 3.1ms 32.8MB 3713ms 0ms chpl 1.31.0
python 8.py timeout 0.0ms 16.7MB 57ms 7ms cpython 3.13.1
python 8.py timeout 0.0ms 100.1MB 863ms 163ms pypy 3.10.14
python 8.py timeout 0.0ms 18.1MB 73ms 20ms 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.1ms 32.9MB 957ms 0ms chpl 1.31.0
chapel 1.chpl 946ms 5.0ms 32.8MB 937ms 7ms chpl 1.31.0
python 8.py timeout 0.0ms 16.5MB 103ms 17ms cpython 3.13.1
python 8.py timeout 0.0ms 100.0MB 1510ms 497ms pypy 3.10.14
python 8.py timeout 0.0ms 17.8MB 127ms 43ms pyston 3.8.12

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 1-m.chpl 141ms 0.2ms 32.9MB 247ms 0ms chpl 1.31.0
chapel 1.chpl 254ms 2.0ms 32.8MB 243ms 0ms chpl 1.31.0
python 8-m.py 1991ms 11ms 95.1MB 6310ms 350ms pypy 3.10.14
python 8.py timeout 0.0ms 16.1MB 257ms 50ms cpython 3.13.1
python 8.py timeout 0.0ms 17.2MB 433ms 100ms pyston 3.8.12