Chapel VS Go benchmarks

Current benchmark data was generated on Sun Jun 01 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
go 1.go 1201ms 11ms 55.0MB 1180ms 10ms tinygo 0.37.0
chapel 4.chpl 1954ms 6.5ms 62.3MB 1947ms 0ms chpl 1.31.0
chapel 3.chpl 2047ms 28ms 60.3MB 2040ms 3ms chpl 1.31.0
go 1-m.go 2364ms 13ms 41.9MB 5290ms 33ms go 1.24.3

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1.go 113ms 2.0ms 5.6MB 100ms 0ms tinygo 0.37.0
chapel 4.chpl 185ms 3.6ms 32.4MB 180ms 0ms chpl 1.31.0
chapel 3.chpl 185ms 0.6ms 32.2MB 180ms 0ms chpl 1.31.0
go 1-m.go 209ms 2.8ms 8.1MB 367ms 10ms go 1.24.3

coro-prime-sieve

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1-m.go 485ms 69ms 13.5MB 1843ms 0ms go 1.24.3
go 1.go 715ms 1.6ms 269.3MB 653ms 50ms tinygo 0.37.0
chapel 1-m.chpl 2211ms 79ms 480.1MB 4320ms 70ms chpl 1.31.0

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1-m.go 39ms 4.1ms 7.5MB 127ms 0ms go 1.24.3
go 1.go 64ms 0.8ms 68.0MB 43ms 10ms tinygo 0.37.0
chapel 1-m.chpl 179ms 0.7ms 445.0MB 293ms 40ms chpl 1.31.0

edigits

Input: 250001

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 1.chpl 71ms 1.5ms 32.5MB 70ms 0ms chpl 1.31.0
go 1.go 117ms 0.4ms 8.8MB 110ms 0ms go 1.24.3

Input: 100000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 1.chpl 33ms 2.6ms 30.5MB 30ms 0ms chpl 1.31.0
go 1.go 34ms 1.3ms 8.4MB 27ms 0ms go 1.24.3

fasta

Input: 2500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 5-m.chpl 104ms 1.5ms 28.3MB 190ms 0ms chpl 1.31.0
go 3-m.go 124ms 0.9ms 5.6MB 373ms 0ms go 1.24.3

Input: 250000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 3-m.go 17ms 0.4ms 5.6MB 30ms 0ms go 1.24.3
chapel 5.chpl 21ms 0.7ms 28.4MB 20ms 0ms chpl 1.31.0

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1.go 0.8ms 0.1ms 0.4MB 0ms 0ms tinygo 0.37.0
go 1.go 1.4ms 0.0ms 3.4MB 0ms 0ms go 1.24.3
chapel 1.chpl 9.3ms 1.5ms 28.8MB 0ms 0ms chpl 1.31.0

knucleotide

Input: 2500000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 7-m.go 679ms 12ms 39.2MB 2393ms 20ms go 1.24.3
chapel 3-m.chpl 747ms 5.4ms 87.2MB 1417ms 10ms chpl 1.31.0

Input: 250000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 3-m.chpl 113ms 1.0ms 87.0MB 200ms 0ms chpl 1.31.0
go 7-m.go 131ms 1.0ms 32.2MB 350ms 20ms go 1.24.3

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 2.chpl 322ms 1.7ms 28.8MB 320ms 0ms chpl 1.31.0
go 1.go 347ms 4.4ms 0.4MB 340ms 0ms tinygo 0.37.0
go 1.go 351ms 3.3ms 3.5MB 343ms 0ms go 1.24.3

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1.go 38ms 1.2ms 0.4MB 30ms 0ms tinygo 0.37.0
go 1.go 38ms 0.5ms 3.5MB 30ms 0ms go 1.24.3
chapel 2.chpl 44ms 1.3ms 28.9MB 40ms 0ms chpl 1.31.0

pidigits

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 2.chpl 444ms 0.7ms 30.4MB 440ms 0ms chpl 1.31.0
go 8.go 1178ms 8.3ms 8.6MB 1163ms 7ms go 1.24.3

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 2.chpl 113ms 1.8ms 30.4MB 110ms 0ms chpl 1.31.0
go 8.go 276ms 1.1ms 8.6MB 267ms 0ms go 1.24.3

regex-redux

Input: 2500000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 3.chpl 1387ms 3.3ms 220.1MB 1343ms 40ms chpl 1.31.0
go 3.go timeout 0.0ms 122.2MB 4983ms 50ms go 1.24.3
go 3.go timeout 0.0ms 133.0MB 4973ms 13ms tinygo 0.37.0

Input: 250000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 3.chpl 163ms 3.8ms 49.0MB 143ms 13ms chpl 1.31.0
go 3.go 1756ms 39ms 20.0MB 1740ms 17ms go 1.24.3
go 3.go 2260ms 24ms 26.2MB 2247ms 0ms tinygo 0.37.0

secp256k1

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 0-ffi.go 92ms 0.1ms 5.2MB 90ms 0ms go 1.24.3
chapel 1.chpl 1181ms 6.5ms 29.1MB 1177ms 0ms chpl 1.31.0

Input: 500

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 0-ffi.go 25ms 0.6ms 5.2MB 20ms 0ms go 1.24.3
chapel 1.chpl 307ms 4.2ms 29.1MB 303ms 0ms chpl 1.31.0

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 4-m.go 1909ms 15ms 5.6MB 7397ms 7ms go 1.24.3
chapel 1-m.chpl 1922ms 11ms 29.0MB 3817ms 0ms chpl 1.31.0
go 1.go 3690ms 9.5ms 5.6MB 3687ms 0ms go 1.24.3
chapel 1.chpl 3716ms 4.8ms 28.8MB 3710ms 0ms chpl 1.31.0
go 1.go timeout 0.0ms 0.5MB 4990ms 0ms tinygo 0.37.0

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 4-m.go 481ms 1.5ms 5.5MB 1840ms 0ms go 1.24.3
chapel 1-m.chpl 492ms 1.0ms 28.9MB 957ms 0ms chpl 1.31.0
go 1.go 929ms 22ms 3.5MB 923ms 0ms go 1.24.3
chapel 1.chpl 940ms 1.7ms 28.8MB 940ms 0ms chpl 1.31.0
go 1.go 1397ms 0.5ms 0.5MB 1390ms 0ms tinygo 0.37.0

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 4-m.go 125ms 0.3ms 5.5MB 453ms 0ms go 1.24.3
chapel 1-m.chpl 133ms 1.1ms 28.9MB 240ms 0ms chpl 1.31.0
go 1.go 231ms 0.6ms 3.5MB 220ms 0ms go 1.24.3
chapel 1.chpl 246ms 3.6ms 28.8MB 240ms 0ms chpl 1.31.0
go 1.go 351ms 0.3ms 0.4MB 340ms 0ms tinygo 0.37.0