Chapel VS Wasm benchmarks

Current benchmark data was generated on Sun Jan 29 2023, 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
wasm 3.rs 2041ms 2.7ms 47.7MB 2013ms 10ms wasmedgec 0.11.2
wasm 5.rs 2088ms 3.3ms 31.6MB 2067ms 3ms wasmedgec 0.11.2
wasm 4.rs 2279ms 3.3ms 31.6MB 2260ms 3ms wasmedgec 0.11.2
chapel 4.chpl 2288ms 2.0ms 39.5MB 2273ms 7ms chpl 1.29.0
chapel 3.chpl 2480ms 30ms 37.5MB 2453ms 7ms chpl 1.29.0
wasm 3.rs 2493ms 19ms 42.7MB 2467ms 3ms wasmtime 5.0.0
wasm 5.rs 2790ms 2.3ms 26.9MB 2770ms 3ms wasmtime 5.0.0
wasm 4.rs 2809ms 12ms 58.6MB 2803ms 10ms node 16.19.0
wasm 3.rs 2813ms 33ms 74.6MB 2807ms 20ms node 16.19.0
wasm 5.rs 2831ms 24ms 59.5MB 2823ms 7ms node 16.19.0
wasm 4.rs 3099ms 11ms 26.9MB 3083ms 0ms wasmtime 5.0.0

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 3.rs 194ms 0.5ms 18.7MB 187ms 0ms wasmedgec 0.11.2
wasm 5.rs 201ms 0.3ms 16.7MB 190ms 0ms wasmedgec 0.11.2
chapel 4.chpl 222ms 4.9ms 7.3MB 207ms 0ms chpl 1.29.0
wasm 4.rs 222ms 4.3ms 19.0MB 203ms 0ms wasmedgec 0.11.2
chapel 3.chpl 232ms 0.8ms 11.3MB 220ms 0ms chpl 1.29.0
wasm 3.rs 237ms 5.1ms 14.8MB 223ms 0ms wasmtime 5.0.0
wasm 5.rs 269ms 4.3ms 12.9MB 253ms 0ms wasmtime 5.0.0
wasm 4.rs 297ms 7.1ms 12.9MB 283ms 0ms wasmtime 5.0.0
wasm 3.rs 331ms 4.4ms 46.5MB 327ms 10ms node 16.19.0
wasm 4.rs 333ms 4.6ms 44.3MB 333ms 7ms node 16.19.0
wasm 5.rs 338ms 4.3ms 43.9MB 343ms 3ms node 16.19.0

coro-prime-sieve

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 3.rs 1470ms 16ms 50.3MB 1510ms 7ms node 16.19.0
wasm 3.rs 1566ms 4.2ms 12.9MB 1550ms 0ms wasmtime 5.0.0
wasm 3.rs 1935ms 4.4ms 17.9MB 1920ms 0ms wasmedgec 0.11.2
chapel 1-m.chpl 4045ms 127ms 59.5MB 7877ms 30ms chpl 1.29.0

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 3.rs 107ms 0.3ms 11.6MB 93ms 0ms wasmtime 5.0.0
wasm 3.rs 133ms 0.3ms 15.9MB 123ms 0ms wasmedgec 0.11.2
wasm 3.rs 209ms 3.6ms 48.8MB 247ms 7ms node 16.19.0
chapel 1-m.chpl 275ms 5.3ms 13.7MB 503ms 3ms chpl 1.29.0

edigits

Input: 250001

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 1.chpl 93ms 4.0ms 5.7MB 83ms 3ms chpl 1.29.0
wasm 1.rs 463ms 0.9ms 15.9MB 450ms 0ms wasmedgec 0.11.2
wasm 1.rs 606ms 0.8ms 12.2MB 590ms 0ms wasmtime 5.0.0
wasm 1.rs 684ms 4.3ms 49.5MB 723ms 10ms node 16.19.0

Input: 100000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 1.chpl 44ms 0.3ms 22.8MB 40ms 0ms chpl 1.29.0
wasm 1.rs 127ms 3.4ms 15.6MB 113ms 0ms wasmedgec 0.11.2
wasm 1.rs 159ms 0.8ms 11.5MB 143ms 0ms wasmtime 5.0.0
wasm 1.rs 265ms 2.5ms 48.3MB 303ms 10ms node 16.19.0

fasta

Input: 2500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 5-m.chpl 147ms 1.7ms 3.8MB 250ms 0ms chpl 1.29.0
wasm 1.rs 356ms 0.9ms 15.6MB 343ms 0ms wasmedgec 0.11.2
wasm 1.rs 409ms 1.4ms 11.2MB 400ms 0ms wasmtime 5.0.0
wasm 1.rs 440ms 2.0ms 43.5MB 453ms 3ms node 16.19.0

Input: 250000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 5.chpl 30ms 3.2ms 3.5MB 33ms 0ms chpl 1.29.0
wasm 1.rs 45ms 3.0ms 15.5MB 30ms 0ms wasmedgec 0.11.2
wasm 1.rs 47ms 1.1ms 9.2MB 30ms 0ms wasmtime 5.0.0
wasm 1.rs 121ms 0.9ms 43.2MB 137ms 3ms node 16.19.0

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 1.rs 5.7ms 0.4ms 15.5MB 0ms 0ms wasmedgec 0.11.2
wasm 1.rs 5.8ms 1.1ms 9.1MB 0ms 0ms wasmtime 5.0.0
chapel 1.chpl 14ms 3.1ms 2.6MB 15ms 0ms chpl 1.29.0
wasm 1.rs 79ms 1.9ms 43.5MB 96ms 2ms node 16.19.0

knucleotide

Input: 2500000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 3-m.chpl 1017ms 73ms 88.2MB 1800ms 30ms chpl 1.29.0

Input: 250000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 3-m.chpl 174ms 13ms 77.8MB 270ms 20ms chpl 1.29.0

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 2.chpl 372ms 2.9ms 2.6MB 363ms 0ms chpl 1.29.0
wasm 1.rs 488ms 0.6ms 10.9MB 477ms 0ms wasmtime 5.0.0
wasm 1.rs 500ms 1.0ms 16.0MB 483ms 0ms wasmedgec 0.11.2
wasm 1.rs 565ms 1.9ms 48.0MB 587ms 3ms node 16.19.0
wasm 2.rs 665ms 0.1ms 9.4MB 653ms 0ms wasmtime 5.0.0
wasm 2.rs 691ms 0.6ms 15.0MB 677ms 3ms wasmedgec 0.11.2
wasm 2.rs 743ms 1.7ms 48.8MB 760ms 10ms node 16.19.0

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 2.chpl 55ms 2.2ms 20.2MB 50ms 0ms chpl 1.29.0
wasm 1.rs 56ms 0.7ms 11.4MB 43ms 0ms wasmtime 5.0.0
wasm 1.rs 58ms 1.7ms 15.4MB 43ms 0ms wasmedgec 0.11.2
wasm 2.rs 74ms 0.8ms 11.2MB 60ms 0ms wasmtime 5.0.0
wasm 2.rs 76ms 0.5ms 15.3MB 60ms 0ms wasmedgec 0.11.2
wasm 1.rs 144ms 2.2ms 47.7MB 167ms 0ms node 16.19.0
wasm 2.rs 166ms 2.9ms 48.8MB 180ms 10ms node 16.19.0

pidigits

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 2.chpl 592ms 4.7ms 6.1MB 587ms 0ms chpl 1.29.0
wasm 2.rs 2766ms 6.0ms 17.3MB 2750ms 0ms wasmedgec 0.11.2
wasm 2.rs 3086ms 2.1ms 11.8MB 3070ms 0ms wasmtime 5.0.0
wasm 2.rs 3429ms 44ms 49.1MB 3470ms 10ms node 16.19.0

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 2.chpl 147ms 1.3ms 3.6MB 140ms 0ms chpl 1.29.0
wasm 2.rs 651ms 3.0ms 16.4MB 637ms 0ms wasmedgec 0.11.2
wasm 2.rs 725ms 0.5ms 11.3MB 713ms 0ms wasmtime 5.0.0
wasm 2.rs 881ms 0.8ms 48.8MB 920ms 7ms node 16.19.0

regex-redux

Input: 2500000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 3.chpl 1984ms 37ms 221.7MB 1840ms 130ms chpl 1.29.0

Input: 250000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 3.chpl 223ms 1.1ms 39.6MB 197ms 17ms chpl 1.29.0

secp256k1

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 0.rs 447ms 0.5ms 16.0MB 433ms 0ms wasmedgec 0.11.2
wasm 0.rs 477ms 1.5ms 9.5MB 467ms 0ms wasmtime 5.0.0
wasm 0.rs 492ms 3.4ms 46.7MB 507ms 10ms node 16.19.0
chapel 1.chpl 1534ms 2.5ms 32.3MB 1520ms 3ms chpl 1.29.0
wasm 1.rs 4677ms 2.1ms 16.0MB 4663ms 0ms wasmedgec 0.11.2
wasm 1.rs 4898ms 53ms 56.1MB 4947ms 10ms node 16.19.0
wasm 1.rs timeout 0.0ms 11.7MB 4987ms 0ms wasmtime 5.0.0

Input: 500

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 0.rs 117ms 0.7ms 14.7MB 103ms 0ms wasmedgec 0.11.2
wasm 0.rs 125ms 0.5ms 9.5MB 110ms 0ms wasmtime 5.0.0
wasm 0.rs 201ms 3.0ms 47.0MB 217ms 10ms node 16.19.0
chapel 1.chpl 400ms 2.7ms 32.3MB 387ms 3ms chpl 1.29.0
wasm 1.rs 1178ms 3.8ms 14.9MB 1160ms 0ms wasmedgec 0.11.2
wasm 1.rs 1322ms 4.4ms 10.2MB 1310ms 0ms wasmtime 5.0.0
wasm 1.rs 1324ms 6.1ms 55.6MB 1367ms 10ms node 16.19.0

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 1-m.chpl 2252ms 12ms 32.3MB 4413ms 10ms chpl 1.29.0
wasm 2.rs 4124ms 0.8ms 16.2MB 4110ms 0ms wasmedgec 0.11.2
wasm 7.rs 4241ms 0.7ms 15.1MB 4227ms 0ms wasmedgec 0.11.2
chapel 1.chpl 4379ms 5.0ms 32.4MB 4373ms 0ms chpl 1.29.0
wasm 2.rs 4382ms 147ms 48.6MB 4403ms 3ms node 16.19.0
wasm 2.rs 4401ms 38ms 11.3MB 4387ms 0ms wasmtime 5.0.0
wasm 7.rs 4495ms 6.9ms 48.8MB 4520ms 3ms node 16.19.0
wasm 7.rs 4611ms 0.3ms 11.2MB 4600ms 0ms wasmtime 5.0.0

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 1-m.chpl 583ms 1.8ms 32.7MB 1113ms 3ms chpl 1.29.0
wasm 2.rs 1037ms 0.4ms 16.6MB 1023ms 0ms wasmedgec 0.11.2
wasm 7.rs 1066ms 0.5ms 15.7MB 1053ms 0ms wasmedgec 0.11.2
wasm 2.rs 1112ms 1.0ms 11.3MB 1100ms 0ms wasmtime 5.0.0
chapel 1.chpl 1114ms 2.0ms 32.3MB 1100ms 7ms chpl 1.29.0
wasm 2.rs 1150ms 2.7ms 48.3MB 1173ms 7ms node 16.19.0
wasm 7.rs 1164ms 3.7ms 11.3MB 1150ms 0ms wasmtime 5.0.0
wasm 7.rs 1199ms 2.1ms 48.8MB 1227ms 0ms node 16.19.0

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 1-m.chpl 166ms 1.9ms 32.3MB 287ms 3ms chpl 1.29.0
wasm 2.rs 266ms 1.1ms 17.0MB 250ms 0ms wasmedgec 0.11.2
wasm 7.rs 275ms 3.4ms 14.5MB 257ms 0ms wasmedgec 0.11.2
wasm 2.rs 283ms 0.4ms 9.4MB 270ms 0ms wasmtime 5.0.0
chapel 1.chpl 296ms 2.0ms 32.3MB 287ms 3ms chpl 1.29.0
wasm 7.rs 299ms 1.9ms 10.9MB 287ms 0ms wasmtime 5.0.0
wasm 2.rs 363ms 2.1ms 48.5MB 383ms 3ms node 16.19.0
wasm 7.rs 376ms 0.6ms 48.8MB 397ms 10ms node 16.19.0