Chapel VS Wasm benchmarks

Current benchmark data was generated on Sun Dec 01 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
wasm 5.rs 1531ms 12ms 55.1MB 1500ms 13ms wasmer/llvm 5.0.2
wasm 4.rs 1599ms 10.0ms 54.8MB 1570ms 17ms wasmer/llvm 5.0.2
wasm 3.rs 1644ms 39ms 71.3MB 1600ms 27ms wasmer/llvm 5.0.2
wasm 5.rs 1750ms 25ms 34.8MB 1723ms 10ms wasmtime 27.0.0
wasm 4.rs 1794ms 30ms 34.9MB 1777ms 3ms wasmtime 27.0.0
wasm 3.rs 1860ms 47ms 52.9MB 1830ms 17ms wasmtime 27.0.0
chapel 4.chpl 1950ms 11ms 66.4MB 1937ms 0ms chpl 1.31.0
chapel 3.chpl 2095ms 33ms 66.4MB 2087ms 3ms chpl 1.31.0

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 5.rs 152ms 0.8ms 41.0MB 140ms 0ms wasmer/llvm 5.0.2
wasm 4.rs 161ms 3.1ms 41.0MB 143ms 3ms wasmer/llvm 5.0.2
wasm 3.rs 165ms 6.6ms 42.9MB 143ms 7ms wasmer/llvm 5.0.2
wasm 4.rs 171ms 1.2ms 21.0MB 157ms 3ms wasmtime 27.0.0
wasm 3.rs 174ms 3.1ms 22.9MB 157ms 3ms wasmtime 27.0.0
wasm 5.rs 181ms 18ms 22.9MB 163ms 0ms wasmtime 27.0.0
chapel 4.chpl 193ms 3.0ms 36.4MB 183ms 7ms chpl 1.31.0
chapel 3.chpl 205ms 18ms 34.3MB 190ms 3ms chpl 1.31.0

coro-prime-sieve

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 3.rs 1094ms 34ms 38.6MB 1077ms 3ms wasmer/llvm 5.0.2
wasm 3.rs 1163ms 43ms 21.3MB 1150ms 0ms wasmtime 27.0.0
chapel 1-m.chpl 2252ms 19ms 555.7MB 4367ms 70ms chpl 1.31.0

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 3.rs 80ms 1.4ms 21.8MB 63ms 0ms wasmtime 27.0.0
wasm 3.rs 81ms 2.4ms 39.2MB 63ms 3ms wasmer/llvm 5.0.2
chapel 1-m.chpl 196ms 3.7ms 508.7MB 307ms 43ms chpl 1.31.0

edigits

Input: 250001

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 1.chpl 80ms 1.0ms 36.4MB 73ms 0ms chpl 1.31.0
wasm 1.rs 357ms 2.7ms 38.5MB 343ms 0ms wasmer/llvm 5.0.2
wasm 1.rs 418ms 3.7ms 20.2MB 403ms 3ms wasmtime 27.0.0

Input: 100000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 1.chpl 41ms 1.3ms 34.4MB 30ms 7ms chpl 1.31.0
wasm 1.rs 101ms 0.3ms 38.5MB 87ms 3ms wasmer/llvm 5.0.2
wasm 1.rs 113ms 1.8ms 21.7MB 100ms 0ms wasmtime 27.0.0

fasta

Input: 2500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 5-m.chpl 130ms 27ms 32.4MB 217ms 0ms chpl 1.31.0
wasm 1.rs 230ms 2.2ms 19.0MB 213ms 0ms wasmtime 27.0.0
wasm 1.rs 331ms 4.4ms 37.5MB 233ms 70ms wasmer/llvm 5.0.2

Input: 250000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 5.chpl 29ms 0.1ms 32.4MB 27ms 0ms chpl 1.31.0
wasm 1.rs 34ms 5.0ms 19.0MB 20ms 3ms wasmtime 27.0.0
wasm 1.rs 45ms 0.8ms 37.5MB 23ms 3ms wasmer/llvm 5.0.2

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 1.rs 7.4ms 0.3ms 21.1MB 0ms 0ms wasmtime 27.0.0
wasm 1.rs 12ms 0.4ms 38.6MB 0ms 0ms wasmer/llvm 5.0.2
chapel 1.chpl 16ms 0.7ms 32.8MB 7ms 3ms chpl 1.31.0

knucleotide

Input: 2500000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 3-m.chpl 760ms 11ms 91.1MB 1427ms 7ms 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 122ms 1.7ms 92.9MB 200ms 7ms chpl 1.31.0

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 2.chpl 334ms 4.0ms 32.8MB 317ms 7ms chpl 1.31.0
wasm 1.rs 343ms 1.8ms 37.1MB 323ms 3ms wasmer/llvm 5.0.2
wasm 1.rs 406ms 1.4ms 20.8MB 390ms 0ms wasmtime 27.0.0
wasm 2.rs 552ms 37ms 39.3MB 540ms 0ms wasmer/llvm 5.0.2
wasm 2.rs 576ms 0.6ms 20.8MB 560ms 0ms wasmtime 27.0.0

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 1.rs 47ms 0.8ms 38.4MB 30ms 3ms wasmer/llvm 5.0.2
wasm 1.rs 49ms 0.5ms 20.8MB 33ms 3ms wasmtime 27.0.0
chapel 2.chpl 52ms 0.2ms 32.8MB 40ms 0ms chpl 1.31.0
wasm 2.rs 66ms 0.8ms 20.8MB 50ms 3ms wasmtime 27.0.0
wasm 2.rs 67ms 3.4ms 37.4MB 50ms 7ms wasmer/llvm 5.0.2

pidigits

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 2.chpl 452ms 1.7ms 32.4MB 440ms 3ms chpl 1.31.0
wasm 2.rs 2075ms 6.3ms 37.6MB 2053ms 3ms wasmer/llvm 5.0.2
wasm 2.rs 2160ms 7.6ms 19.7MB 2147ms 0ms wasmtime 27.0.0

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 2.chpl 121ms 1.7ms 34.4MB 117ms 3ms chpl 1.31.0
wasm 2.rs 493ms 3.2ms 39.4MB 480ms 0ms wasmer/llvm 5.0.2
wasm 2.rs 514ms 2.4ms 19.2MB 497ms 0ms wasmtime 27.0.0

regex-redux

Input: 2500000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 3.chpl 1395ms 6.8ms 224.1MB 1333ms 53ms chpl 1.31.0

Input: 250000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 3.chpl 170ms 2.9ms 53.0MB 143ms 20ms chpl 1.31.0

secp256k1

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 1.chpl 1235ms 79ms 33.1MB 1227ms 3ms chpl 1.31.0
wasm 1.rs 3108ms 21ms 37.1MB 3093ms 3ms wasmer/llvm 5.0.2
wasm 1.rs 3496ms 1.3ms 20.6MB 3480ms 0ms wasmtime 27.0.0

Input: 500

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 1.chpl 313ms 1.6ms 33.1MB 300ms 7ms chpl 1.31.0
wasm 1.rs 787ms 3.0ms 39.0MB 773ms 3ms wasmer/llvm 5.0.2
wasm 1.rs 887ms 3.6ms 20.7MB 877ms 0ms wasmtime 27.0.0

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 1-m.chpl 1933ms 21ms 33.0MB 3823ms 0ms chpl 1.31.0
wasm 2.rs 3587ms 3.9ms 37.2MB 3573ms 3ms wasmer/llvm 5.0.2
wasm 2.rs 3589ms 8.6ms 18.9MB 3573ms 0ms wasmtime 27.0.0
wasm 7.rs 3597ms 1.9ms 38.9MB 3580ms 3ms wasmer/llvm 5.0.2
chapel 1.chpl 3709ms 10.0ms 32.8MB 3703ms 0ms chpl 1.31.0
wasm 7.rs 4874ms 3.3ms 20.7MB 4857ms 0ms wasmtime 27.0.0

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 1-m.chpl 496ms 1.0ms 32.8MB 960ms 0ms chpl 1.31.0
wasm 2.rs 906ms 2.5ms 18.7MB 890ms 0ms wasmtime 27.0.0
wasm 2.rs 909ms 1.3ms 38.9MB 893ms 0ms wasmer/llvm 5.0.2
wasm 7.rs 909ms 0.8ms 39.0MB 893ms 0ms wasmer/llvm 5.0.2
chapel 1.chpl 946ms 5.3ms 32.8MB 937ms 7ms chpl 1.31.0
wasm 7.rs 1233ms 11ms 18.7MB 1220ms 0ms wasmtime 27.0.0

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 1-m.chpl 140ms 0.3ms 32.9MB 243ms 3ms chpl 1.31.0
wasm 2.rs 234ms 2.2ms 18.5MB 220ms 0ms wasmtime 27.0.0
wasm 2.rs 238ms 1.1ms 38.9MB 227ms 0ms wasmer/llvm 5.0.2
wasm 7.rs 239ms 1.1ms 37.2MB 223ms 0ms wasmer/llvm 5.0.2
chapel 1.chpl 257ms 3.3ms 32.8MB 247ms 0ms chpl 1.31.0
wasm 7.rs 321ms 11ms 18.8MB 303ms 0ms wasmtime 27.0.0