Chapel VS D benchmarks

Current benchmark data was generated on Mon May 19 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
d 1.d 1782ms 3.3ms 312.5MB 1753ms 37ms ldc2 1.40.1
chapel 4.chpl 1952ms 9.9ms 62.3MB 1943ms 3ms chpl 1.31.0
chapel 3.chpl 2127ms 36ms 62.3MB 2120ms 0ms chpl 1.31.0
d 1.d 3057ms 15ms 314.4MB 3227ms 60ms dmd 2.111.0

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 167ms 2.7ms 207.7MB 140ms 13ms ldc2 1.40.1
chapel 4.chpl 184ms 1.8ms 30.3MB 180ms 0ms chpl 1.31.0
chapel 3.chpl 186ms 1.6ms 32.3MB 183ms 0ms chpl 1.31.0
d 1.d 262ms 1.0ms 210.5MB 233ms 17ms dmd 2.111.0

coro-prime-sieve

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 1-m.chpl 2280ms 43ms 659.8MB 4437ms 87ms chpl 1.31.0
d 1.d timeout 0.0ms 18.2MB 4963ms 20ms dmd 2.111.0
d 1.d timeout 0.0ms 17.6MB 4963ms 23ms ldc2 1.40.1

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 1-m.chpl 206ms 4.4ms 630.1MB 320ms 60ms chpl 1.31.0
d 1.d 1046ms 5.9ms 10.5MB 1017ms 13ms ldc2 1.40.1
d 1.d 1385ms 4.2ms 12.0MB 1360ms 13ms dmd 2.111.0

edigits

Input: 250001

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 1.chpl 71ms 1.6ms 32.5MB 70ms 0ms chpl 1.31.0
d 1.d 2552ms 4.9ms 8.2MB 2540ms 0ms ldc2 1.40.1
d 1.d 2864ms 4.6ms 10.4MB 2853ms 0ms dmd 2.111.0

Input: 100000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 1.chpl 33ms 3.0ms 30.5MB 30ms 0ms chpl 1.31.0
d 1.d 443ms 3.5ms 8.0MB 433ms 0ms ldc2 1.40.1
d 1.d 518ms 2.7ms 10.5MB 507ms 0ms dmd 2.111.0

fasta

Input: 2500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 5-m.chpl 105ms 0.9ms 28.4MB 190ms 0ms chpl 1.31.0
d 1.d 154ms 1.7ms 2.9MB 143ms 0ms ldc2 1.40.1
d 1.d 643ms 4.3ms 4.8MB 630ms 0ms dmd 2.111.0

Input: 250000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 19ms 1.1ms 2.9MB 10ms 0ms ldc2 1.40.1
chapel 5.chpl 22ms 2.1ms 28.4MB 20ms 0ms chpl 1.31.0
d 1.d 67ms 0.4ms 4.6MB 60ms 0ms dmd 2.111.0

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 1.7ms 0.1ms 2.9MB 0ms 0ms ldc2 1.40.1
d 1.d 1.9ms 0.1ms 5.1MB 0ms 0ms dmd 2.111.0
chapel 1.chpl 11ms 0.3ms 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
d 1-m.d 695ms 46ms 47.4MB 2337ms 13ms ldc2 1.40.1
chapel 3-m.chpl 749ms 3.1ms 86.9MB 1420ms 7ms chpl 1.31.0
d 1-m.d 1882ms 53ms 50.6MB 6120ms 20ms dmd 2.111.0

Input: 250000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1-m.d 98ms 9.6ms 38.9MB 260ms 10ms ldc2 1.40.1
chapel 3-m.chpl 115ms 1.4ms 77.0MB 200ms 0ms chpl 1.31.0
d 1-m.d 214ms 9.2ms 39.5MB 653ms 13ms dmd 2.111.0

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 2.chpl 322ms 4.1ms 28.9MB 317ms 0ms chpl 1.31.0
d 2.d 360ms 0.1ms 2.9MB 350ms 0ms ldc2 1.40.1
d 1.d 360ms 0.6ms 2.9MB 350ms 0ms ldc2 1.40.1
d 1.d 680ms 2.4ms 4.8MB 670ms 0ms dmd 2.111.0
d 2.d 2035ms 5.7ms 4.6MB 2023ms 0ms dmd 2.111.0

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 38ms 0.1ms 2.9MB 30ms 0ms ldc2 1.40.1
d 2.d 39ms 0.6ms 2.9MB 30ms 0ms ldc2 1.40.1
chapel 2.chpl 45ms 0.3ms 28.9MB 40ms 0ms chpl 1.31.0
d 1.d 72ms 1.0ms 4.8MB 60ms 0ms dmd 2.111.0
d 2.d 208ms 2.5ms 4.8MB 197ms 0ms dmd 2.111.0

pidigits

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 2.chpl 445ms 2.1ms 30.4MB 440ms 0ms chpl 1.31.0
d 1.d 2430ms 7.2ms 8.0MB 2377ms 430ms ldc2 1.40.1
d 1.d 4442ms 23ms 10.4MB 4377ms 490ms dmd 2.111.0

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 2.chpl 115ms 0.6ms 30.4MB 110ms 0ms chpl 1.31.0
d 1.d 583ms 1.1ms 8.0MB 567ms 103ms ldc2 1.40.1
d 1.d 1061ms 8.7ms 10.4MB 1033ms 120ms dmd 2.111.0

regex-redux

Input: 2500000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 3.d 569ms 12ms 172.2MB 747ms 20ms ldc2 1.40.1
d 3.d 1198ms 6.4ms 175.1MB 1387ms 20ms dmd 2.111.0
chapel 3.chpl 1396ms 9.0ms 220.1MB 1353ms 37ms chpl 1.31.0

Input: 250000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 3.d 63ms 1.2ms 26.2MB 70ms 3ms ldc2 1.40.1
d 3.d 128ms 1.2ms 31.7MB 143ms 0ms dmd 2.111.0
chapel 3.chpl 163ms 2.2ms 48.9MB 140ms 13ms chpl 1.31.0

secp256k1

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 1.chpl 1184ms 16ms 29.1MB 1177ms 0ms chpl 1.31.0
d 1.d 4791ms 12ms 4.0MB 4737ms 387ms ldc2 1.40.1
d 1.d timeout 0.0ms 6.5MB 4933ms 317ms dmd 2.111.0

Input: 500

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 1.chpl 315ms 8.4ms 29.1MB 310ms 0ms chpl 1.31.0
d 1.d 1205ms 8.8ms 3.9MB 1180ms 97ms ldc2 1.40.1
d 1.d 2046ms 8.3ms 6.5MB 2033ms 103ms dmd 2.111.0

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 1-m.chpl 1912ms 1.5ms 28.9MB 3800ms 0ms chpl 1.31.0
d 1.d 3596ms 3.2ms 3.9MB 3583ms 0ms ldc2 1.40.1
d 1.d 3660ms 2.7ms 6.0MB 3650ms 0ms dmd 2.111.0
chapel 1.chpl 3730ms 9.2ms 28.8MB 3720ms 0ms chpl 1.31.0

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 1-m.chpl 492ms 1.7ms 28.8MB 960ms 0ms chpl 1.31.0
d 1.d 902ms 2.2ms 3.5MB 890ms 0ms ldc2 1.40.1
d 1.d 926ms 1.0ms 7.9MB 917ms 0ms dmd 2.111.0
chapel 1.chpl 940ms 3.7ms 28.8MB 933ms 0ms chpl 1.31.0

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 1-m.chpl 134ms 0.9ms 28.9MB 240ms 0ms chpl 1.31.0
d 1.d 228ms 0.6ms 3.1MB 220ms 0ms ldc2 1.40.1
d 1.d 234ms 1.2ms 4.9MB 223ms 0ms dmd 2.111.0
chapel 1.chpl 249ms 2.0ms 28.8MB 243ms 0ms chpl 1.31.0