Chapel VS Go benchmarks

Current benchmark data was generated on Mon Jun 23 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 1752ms 19ms 51.9MB 1730ms 10ms tinygo 0.38.0
chapel 4.chpl 1973ms 34ms 62.3MB 1967ms 0ms chpl 1.31.0
chapel 3.chpl 2236ms 21ms 62.4MB 2227ms 0ms chpl 1.31.0
go 1-m.go 2372ms 7.5ms 42.0MB 5283ms 43ms go 1.24.4

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1.go 154ms 0.3ms 5.0MB 140ms 0ms tinygo 0.38.0
chapel 4.chpl 185ms 1.3ms 32.4MB 180ms 0ms chpl 1.31.0
chapel 3.chpl 188ms 3.2ms 32.4MB 183ms 0ms chpl 1.31.0
go 1-m.go 209ms 2.0ms 7.9MB 373ms 7ms go 1.24.4

coro-prime-sieve

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1-m.go 521ms 70ms 15.5MB 2027ms 3ms go 1.24.4
chapel 1-m.chpl 2341ms 58ms 699.6MB 4543ms 103ms chpl 1.31.0
go 1.go timeout 0.0ms 13.3MB 2440ms 17150ms tinygo 0.38.0

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1-m.go 47ms 13ms 7.4MB 160ms 0ms go 1.24.4
chapel 1-m.chpl 211ms 12ms 658.0MB 330ms 60ms chpl 1.31.0
go 1-m.go 619ms 19ms 4.3MB 277ms 1990ms tinygo 0.38.0

edigits

Input: 250001

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 1.chpl 72ms 1.7ms 32.5MB 70ms 0ms chpl 1.31.0
go 1.go 118ms 1.1ms 8.5MB 107ms 0ms go 1.24.4

Input: 100000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 1.chpl 33ms 1.6ms 30.5MB 30ms 0ms chpl 1.31.0
go 1.go 34ms 0.1ms 8.2MB 30ms 0ms go 1.24.4

fasta

Input: 2500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 5-m.chpl 109ms 1.6ms 28.4MB 197ms 0ms chpl 1.31.0
go 3-m.go 125ms 0.3ms 7.5MB 380ms 0ms go 1.24.4

Input: 250000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 3-m.go 17ms 0.6ms 7.6MB 30ms 0ms go 1.24.4
chapel 5.chpl 23ms 1.5ms 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.7ms 0.0ms 0.3MB 0ms 0ms tinygo 0.38.0
go 1.go 1.4ms 0.1ms 3.4MB 0ms 0ms go 1.24.4
chapel 1.chpl 11ms 0.4ms 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 676ms 7.8ms 38.9MB 2393ms 23ms go 1.24.4
chapel 3-m.chpl 762ms 5.2ms 99.0MB 1443ms 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 116ms 1.6ms 87.0MB 203ms 3ms chpl 1.31.0
go 7-m.go 130ms 2.8ms 23.9MB 343ms 23ms go 1.24.4

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 2.chpl 325ms 1.9ms 26.6MB 320ms 0ms chpl 1.31.0
go 1.go 346ms 1.4ms 0.3MB 337ms 0ms tinygo 0.38.0
go 1.go 349ms 1.6ms 3.5MB 340ms 0ms go 1.24.4

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1.go 36ms 0.4ms 0.3MB 30ms 0ms tinygo 0.38.0
go 1.go 37ms 0.1ms 3.5MB 30ms 0ms go 1.24.4
chapel 2.chpl 46ms 1.1ms 28.8MB 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 447ms 1.6ms 30.4MB 440ms 0ms chpl 1.31.0
go 8.go 1174ms 6.0ms 10.6MB 1160ms 3ms go 1.24.4

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 2.chpl 114ms 0.9ms 30.4MB 110ms 0ms chpl 1.31.0
go 8.go 278ms 2.4ms 8.6MB 267ms 0ms go 1.24.4

regex-redux

Input: 2500000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 3.chpl 1401ms 0.9ms 220.3MB 1350ms 43ms chpl 1.31.0
go 3.go timeout 0.0ms 122.3MB 4983ms 43ms go 1.24.4
go 3.go timeout 0.0ms 85.0MB 4973ms 10ms tinygo 0.38.0

Input: 250000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 3.chpl 168ms 2.2ms 49.0MB 147ms 20ms chpl 1.31.0
go 3.go 1798ms 95ms 20.2MB 1780ms 27ms go 1.24.4
go 3.go 2264ms 20ms 23.3MB 2247ms 0ms tinygo 0.38.0

secp256k1

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 0-ffi.go 92ms 1.0ms 5.2MB 90ms 0ms go 1.24.4
chapel 1.chpl 1180ms 4.7ms 29.1MB 1173ms 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 26ms 0.6ms 5.2MB 20ms 0ms go 1.24.4
chapel 1.chpl 305ms 1.3ms 29.0MB 300ms 0ms chpl 1.31.0

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 1-m.chpl 1915ms 3.4ms 28.9MB 3803ms 0ms chpl 1.31.0
go 4-m.go 1917ms 15ms 5.5MB 7387ms 13ms go 1.24.4
go 1.go 3646ms 8.0ms 5.6MB 3637ms 0ms go 1.24.4
chapel 1.chpl 3721ms 7.6ms 28.8MB 3713ms 0ms chpl 1.31.0
go 1.go timeout 0.0ms 0.5MB 4990ms 0ms tinygo 0.38.0

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 4-m.go 481ms 1.8ms 5.6MB 1843ms 0ms go 1.24.4
chapel 1-m.chpl 491ms 1.8ms 28.9MB 957ms 0ms chpl 1.31.0
go 1.go 915ms 1.3ms 3.5MB 907ms 0ms go 1.24.4
chapel 1.chpl 956ms 29ms 28.8MB 953ms 0ms chpl 1.31.0
go 1.go 1397ms 1.7ms 0.4MB 1387ms 0ms tinygo 0.38.0

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 4-m.go 126ms 0.7ms 5.6MB 450ms 0ms go 1.24.4
chapel 1-m.chpl 135ms 1.0ms 28.9MB 243ms 0ms chpl 1.31.0
go 1.go 231ms 1.9ms 3.5MB 220ms 0ms go 1.24.4
chapel 1.chpl 248ms 1.5ms 28.8MB 240ms 0ms chpl 1.31.0
go 1.go 351ms 0.1ms 0.4MB 340ms 0ms tinygo 0.38.0