Chapel VS Rust benchmarks

Current benchmark data was generated on Thu Sep 22 2022, full log can be found HERE

CONTRIBUTIONS are WELCOME!

[x86_64][2 cores] Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz (Model 106)

* -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
rust 4.rs 1550ms 7.8ms 33.7MB 1523ms 10ms rustc 1.64.0
rust 5.rs 1712ms 13ms 33.8MB 1693ms 0ms rustc 1.64.0
rust 3.rs 1852ms 32ms 49.8MB 1823ms 10ms rustc 1.64.0
chapel 4.chpl 2299ms 1.2ms 58.2MB 2277ms 13ms chpl 1.27.0
chapel 3.chpl 2433ms 5.5ms 50.3MB 2413ms 13ms chpl 1.27.0

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 4.rs 143ms 3.4ms 5.7MB 130ms 0ms rustc 1.64.0
rust 5.rs 155ms 1.4ms 5.7MB 147ms 0ms rustc 1.64.0
rust 3.rs 163ms 3.1ms 7.7MB 147ms 0ms rustc 1.64.0
chapel 3.chpl 222ms 0.5ms 13.1MB 210ms 3ms chpl 1.27.0
chapel 4.chpl 222ms 7.3ms 26.1MB 210ms 0ms chpl 1.27.0

coro-prime-sieve

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 5-m.rs 915ms 116ms 5.2MB 1747ms 30ms rustc 1.64.0
rust 3-m.rs 935ms 70ms 6.3MB 1773ms 27ms rustc 1.64.0
rust 3.rs 1829ms 16ms 6.5MB 1780ms 30ms rustc 1.64.0
rust 1-m.rs 2570ms 16ms 5.2MB 4930ms 123ms rustc 1.64.0
rust 4.rs 3185ms 4.4ms 4.4MB 3170ms 0ms rustc 1.64.0
chapel 1-m.chpl 4004ms 54ms 169.4MB 7737ms 47ms chpl 1.27.0

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 3-m.rs 72ms 4.5ms 2.9MB 113ms 3ms rustc 1.64.0
rust 5-m.rs 93ms 16ms 3.0MB 153ms 7ms rustc 1.64.0
rust 3.rs 117ms 0.7ms 3.1MB 107ms 0ms rustc 1.64.0
rust 1-m.rs 192ms 1.5ms 2.9MB 327ms 27ms rustc 1.64.0
rust 4.rs 210ms 0.6ms 2.6MB 197ms 0ms rustc 1.64.0
chapel 1-m.chpl 263ms 2.4ms 30.2MB 480ms 3ms chpl 1.27.0

edigits

Input: 250001

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 1.chpl 97ms 0.5ms 36.1MB 90ms 0ms chpl 1.27.0
rust 1.rs 146ms 0.9ms 3.7MB 140ms 0ms rustc 1.64.0
rust 2.rs 599ms 0.4ms 4.1MB 587ms 0ms rustc 1.64.0

Input: 100000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 1.rs 41ms 0.2ms 3.0MB 30ms 0ms rustc 1.64.0
chapel 1.chpl 46ms 1.3ms 34.1MB 37ms 3ms chpl 1.27.0
rust 2.rs 114ms 1.3ms 3.3MB 100ms 0ms rustc 1.64.0

fasta

Input: 2500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 5-m.chpl 147ms 2.2ms 32.0MB 250ms 3ms chpl 1.27.0
rust 5c-m.rs 179ms 1.2ms 1.2MB 320ms 0ms rustc 1.66.0-nightly
rust 5-m.rs 205ms 1.4ms 1.3MB 370ms 0ms rustc 1.64.0
rust 1c.rs 231ms 0.9ms 0.7MB 220ms 0ms rustc 1.66.0-nightly
rust 1.rs 315ms 0.4ms 0.6MB 303ms 0ms rustc 1.64.0

Input: 250000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 1c.rs 28ms 1.5ms 0.7MB 10ms 0ms rustc 1.66.0-nightly
rust 5-m.rs 29ms 0.4ms 1.3MB 40ms 0ms rustc 1.64.0
rust 5c-m.rs 30ms 1.4ms 1.3MB 33ms 0ms rustc 1.66.0-nightly
rust 1.rs 34ms 0.2ms 0.6MB 23ms 0ms rustc 1.64.0
chapel 5.chpl 34ms 1.5ms 32.0MB 30ms 7ms chpl 1.27.0

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 1.rs 1.7ms 0.6ms 0.6MB 0ms 0ms rustc 1.66.0-nightly
rust 1.rs 1.7ms 0.6ms 0.6MB 0ms 0ms rustc 1.64.0
chapel 1.chpl 18ms 3.7ms 32.4MB 10ms 0ms chpl 1.27.0

knucleotide

Input: 2500000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 8-m.rs 337ms 3.4ms 28.7MB 610ms 3ms rustc 1.64.0
rust 8.rs 592ms 4.2ms 24.0MB 577ms 3ms rustc 1.64.0
chapel 3-m.chpl 936ms 1.2ms 100.4MB 1733ms 13ms chpl 1.27.0

Input: 250000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 8-m.rs 48ms 3.5ms 15.4MB 63ms 3ms rustc 1.64.0
rust 8.rs 76ms 0.2ms 11.5MB 57ms 3ms rustc 1.64.0
chapel 3-m.chpl 157ms 2.7ms 90.4MB 257ms 10ms chpl 1.27.0

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 4-i.rs 252ms 0.0ms 0.6MB 240ms 0ms rustc 1.64.0
rust 7-i.rs 305ms 0.6ms 0.6MB 297ms 0ms rustc 1.64.0
rust 3.rs 339ms 0.4ms 0.7MB 330ms 0ms rustc 1.66.0-nightly
rust 2.rs 345ms 1.7ms 0.6MB 333ms 0ms rustc 1.64.0
chapel 2.chpl 363ms 2.4ms 32.4MB 350ms 7ms chpl 1.27.0
rust 1.rs 387ms 6.1ms 0.6MB 373ms 0ms rustc 1.64.0

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 4-i.rs 28ms 0.2ms 0.6MB 20ms 0ms rustc 1.64.0
rust 7-i.rs 34ms 1.1ms 0.6MB 23ms 0ms rustc 1.64.0
rust 3.rs 36ms 0.4ms 0.6MB 30ms 0ms rustc 1.66.0-nightly
rust 2.rs 37ms 0.5ms 0.6MB 27ms 0ms rustc 1.64.0
rust 1.rs 41ms 0.7ms 0.6MB 30ms 0ms rustc 1.64.0
chapel 2.chpl 56ms 1.3ms 32.4MB 50ms 0ms chpl 1.27.0

pidigits

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 2.chpl 593ms 1.5ms 34.1MB 580ms 7ms chpl 1.27.0
rust 2.rs 1838ms 1.3ms 2.9MB 1770ms 50ms rustc 1.64.0
rust 1.rs 1854ms 1.9ms 2.8MB 1703ms 137ms rustc 1.64.0

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 2.chpl 154ms 1.9ms 34.1MB 143ms 3ms chpl 1.27.0
rust 1.rs 395ms 3.1ms 2.5MB 373ms 7ms rustc 1.64.0
rust 2.rs 410ms 0.3ms 2.6MB 397ms 0ms rustc 1.64.0

regex-redux

Input: 2500000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 7.rs 566ms 3.5ms 77.9MB 710ms 20ms rustc 1.64.0
chapel 3.chpl 2015ms 13ms 251.7MB 1870ms 133ms chpl 1.27.0

Input: 250000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 7.rs 64ms 2.4ms 11.7MB 73ms 0ms rustc 1.64.0
chapel 3.chpl 222ms 1.0ms 56.8MB 203ms 10ms chpl 1.27.0

secp256k1

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 0.rs 147ms 3.4ms 0.7MB 133ms 0ms rustc 1.64.0
chapel 1.chpl 1536ms 10.0ms 32.3MB 1527ms 0ms chpl 1.27.0
rust 1.rs 1902ms 3.6ms 0.7MB 1890ms 0ms rustc 1.64.0

Input: 500

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 0.rs 39ms 0.6ms 0.7MB 30ms 0ms rustc 1.64.0
chapel 1.chpl 398ms 0.9ms 32.3MB 383ms 3ms chpl 1.27.0
rust 1.rs 478ms 3.9ms 0.6MB 460ms 0ms rustc 1.64.0

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 8-m.rs 1065ms 2.8ms 2.6MB 2060ms 0ms rustc 1.66.0-nightly
rust 7-m.rs 1066ms 4.5ms 2.2MB 2060ms 0ms rustc 1.64.0
rust 8.rs 2063ms 3.3ms 2.5MB 2050ms 0ms rustc 1.66.0-nightly
rust 7.rs 2065ms 5.3ms 2.0MB 2050ms 0ms rustc 1.64.0
rust 2-m.rs 2151ms 4.0ms 2.1MB 4187ms 0ms rustc 1.64.0
chapel 1-m.chpl 2299ms 91ms 32.5MB 4450ms 7ms chpl 1.27.0
chapel 1.chpl 4375ms 0.8ms 32.5MB 4363ms 3ms chpl 1.27.0
rust 2.rs timeout 0.0ms 0.0MB 0ms 0ms rustc 1.64.0

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 7-m.rs 275ms 0.4ms 0.7MB 507ms 3ms rustc 1.64.0
rust 8-m.rs 277ms 2.7ms 2.4MB 510ms 0ms rustc 1.66.0-nightly
rust 7.rs 517ms 0.3ms 0.6MB 507ms 0ms rustc 1.64.0
rust 8.rs 518ms 0.1ms 2.2MB 510ms 0ms rustc 1.66.0-nightly
rust 2-m.rs 545ms 0.6ms 2.1MB 1040ms 0ms rustc 1.64.0
chapel 1-m.chpl 581ms 0.2ms 32.5MB 1107ms 0ms chpl 1.27.0
chapel 1.chpl 1110ms 0.7ms 32.4MB 1100ms 3ms chpl 1.27.0
rust 2.rs 1707ms 1.1ms 0.6MB 1697ms 0ms rustc 1.64.0

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 7-m.rs 75ms 1.2ms 2.1MB 130ms 0ms rustc 1.64.0
rust 8-m.rs 77ms 3.5ms 2.2MB 123ms 0ms rustc 1.66.0-nightly
rust 8.rs 132ms 0.8ms 2.1MB 120ms 0ms rustc 1.66.0-nightly
rust 7.rs 132ms 0.8ms 0.6MB 120ms 0ms rustc 1.64.0
rust 2-m.rs 145ms 1.3ms 0.7MB 257ms 0ms rustc 1.64.0
chapel 1-m.chpl 165ms 2.1ms 32.5MB 287ms 0ms chpl 1.27.0
chapel 1.chpl 306ms 19ms 32.4MB 283ms 10ms chpl 1.27.0
rust 2.rs 429ms 0.2ms 0.6MB 420ms 0ms rustc 1.64.0