Chapel VS Wasm benchmarks

Current benchmark data was generated on Fri May 20 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
wasm 3.rs 2001ms 12ms 40.9MB 1977ms 10ms wasmedgec 0.9.1
wasm 3.rs 2003ms 12ms 38.0MB 1960ms 27ms wasmer/llvm 2.2.1
wasm 5.rs 2010ms 5.6ms 24.9MB 1987ms 3ms wasmedgec 0.9.1
wasm 4.rs 2213ms 9.5ms 24.9MB 2197ms 0ms wasmedgec 0.9.1
chapel 4.chpl 2346ms 6.5ms 64.0MB 2320ms 17ms chpl 1.26.0
chapel 3.chpl 2513ms 24ms 64.0MB 2487ms 17ms chpl 1.26.0
wasm 5.rs 2617ms 4.8ms 22.3MB 2593ms 3ms wasmer/llvm 2.2.1
wasm 3.rs 2632ms 10ms 42.2MB 2607ms 10ms wasmtime 0.36.0
wasm 4.rs 2698ms 39ms 22.2MB 2670ms 13ms wasmer/llvm 2.2.1
wasm 5.rs 2882ms 50ms 58.7MB 2883ms 13ms node 16.15.0
wasm 3.rs 2936ms 43ms 74.8MB 2913ms 20ms node 16.15.0
wasm 4.rs 2969ms 12ms 58.8MB 2963ms 13ms node 16.15.0
wasm 4.rs 3209ms 19ms 26.3MB 3183ms 7ms wasmtime 0.36.0
wasm 5.rs 3225ms 37ms 26.3MB 3207ms 3ms wasmtime 0.36.0

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 5.rs 196ms 0.7ms 10.9MB 183ms 0ms wasmedgec 0.9.1
wasm 3.rs 196ms 14ms 10.1MB 170ms 0ms wasmer/llvm 2.2.1
wasm 3.rs 198ms 4.8ms 12.9MB 183ms 0ms wasmedgec 0.9.1
wasm 4.rs 216ms 3.1ms 10.9MB 203ms 0ms wasmedgec 0.9.1
chapel 4.chpl 226ms 2.7ms 34.1MB 207ms 3ms chpl 1.26.0
chapel 3.chpl 228ms 2.1ms 34.3MB 213ms 3ms chpl 1.26.0
wasm 5.rs 253ms 10ms 8.1MB 237ms 0ms wasmer/llvm 2.2.1
wasm 4.rs 259ms 8.1ms 8.2MB 240ms 0ms wasmer/llvm 2.2.1
wasm 3.rs 261ms 16ms 14.3MB 233ms 0ms wasmtime 0.36.0
wasm 5.rs 310ms 7.3ms 12.4MB 293ms 0ms wasmtime 0.36.0
wasm 4.rs 316ms 9.1ms 12.4MB 303ms 0ms wasmtime 0.36.0
wasm 4.rs 347ms 6.1ms 44.5MB 350ms 10ms node 16.15.0
wasm 5.rs 356ms 15ms 44.3MB 367ms 3ms node 16.15.0
wasm 3.rs 356ms 18ms 49.2MB 350ms 13ms node 16.15.0

coro-prime-sieve

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 3.rs 1337ms 61ms 8.5MB 1327ms 0ms wasmer/llvm 2.2.1
wasm 3.rs 1508ms 36ms 47.7MB 1560ms 3ms node 16.15.0
wasm 3.rs 1825ms 10ms 12.3MB 1810ms 0ms wasmtime 0.36.0
chapel 1-m.chpl 4114ms 58ms 71.5MB 8013ms 37ms chpl 1.26.0

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 3.rs 91ms 10ms 6.8MB 73ms 0ms wasmer/llvm 2.2.1
wasm 3.rs 124ms 1.7ms 11.0MB 113ms 0ms wasmtime 0.36.0
wasm 3.rs 215ms 3.8ms 48.3MB 257ms 7ms node 16.15.0
chapel 1-m.chpl 281ms 1.3ms 44.2MB 503ms 10ms chpl 1.26.0

edigits

Input: 250001

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 1.chpl 97ms 2.3ms 36.1MB 83ms 7ms chpl 1.26.0
wasm 1.rs 477ms 0.5ms 7.9MB 463ms 0ms wasmer/llvm 2.2.1
wasm 1.rs 498ms 1.6ms 11.3MB 483ms 0ms wasmedgec 0.9.1
wasm 1.rs 604ms 0.5ms 13.6MB 590ms 0ms wasmtime 0.36.0
wasm 1.rs 706ms 1.0ms 51.5MB 753ms 3ms node 16.15.0

Input: 100000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 1.chpl 47ms 1.5ms 34.1MB 40ms 0ms chpl 1.26.0
wasm 1.rs 131ms 9.4ms 6.9MB 117ms 0ms wasmer/llvm 2.2.1
wasm 1.rs 140ms 1.9ms 10.7MB 130ms 0ms wasmedgec 0.9.1
wasm 1.rs 161ms 1.4ms 11.1MB 150ms 0ms wasmtime 0.36.0
wasm 1.rs 270ms 1.2ms 47.5MB 313ms 7ms node 16.15.0

fasta

Input: 2500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 5-m.chpl 150ms 1.4ms 32.0MB 253ms 7ms chpl 1.26.0
wasm 1.rs 348ms 0.4ms 6.4MB 333ms 0ms wasmer/llvm 2.2.1
wasm 1.rs 357ms 1.4ms 10.9MB 347ms 0ms wasmtime 0.36.0
wasm 1.rs 366ms 0.6ms 8.8MB 353ms 0ms wasmedgec 0.9.1
wasm 1.rs 462ms 4.7ms 43.1MB 480ms 3ms node 16.15.0

Input: 250000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 5.chpl 33ms 0.6ms 32.0MB 30ms 3ms chpl 1.26.0
wasm 1.rs 43ms 0.7ms 11.0MB 30ms 0ms wasmtime 0.36.0
wasm 1.rs 46ms 15ms 6.4MB 27ms 0ms wasmer/llvm 2.2.1
wasm 1.rs 49ms 3.4ms 9.1MB 33ms 0ms wasmedgec 0.9.1
wasm 1.rs 125ms 3.2ms 43.3MB 143ms 3ms node 16.15.0

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 1.rs 6.3ms 0.6ms 10.2MB 0ms 0ms wasmtime 0.36.0
wasm 1.rs 6.3ms 6.5ms 5.7MB 0ms 0ms wasmer/llvm 2.2.1
wasm 1.rs 9.0ms 0.7ms 8.6MB 0ms 0ms wasmedgec 0.9.1
chapel 1.chpl 18ms 0.9ms 32.4MB 8ms 3ms chpl 1.26.0
wasm 1.rs 75ms 1.7ms 42.1MB 90ms 2ms node 16.15.0

knucleotide

Input: 2500000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 3-m.chpl 954ms 13ms 98.6MB 1727ms 27ms chpl 1.26.0

Input: 250000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 3-m.chpl 168ms 8.5ms 77.1MB 263ms 20ms chpl 1.26.0

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 2.chpl 363ms 1.3ms 32.4MB 350ms 0ms chpl 1.26.0
wasm 1.rs 470ms 1.7ms 4.9MB 457ms 0ms wasmer/llvm 2.2.1
wasm 1.rs 503ms 0.2ms 9.3MB 490ms 0ms wasmedgec 0.9.1
wasm 1.rs 519ms 0.1ms 9.0MB 503ms 0ms wasmtime 0.36.0
wasm 1.rs 566ms 1.9ms 47.5MB 590ms 0ms node 16.15.0
wasm 2.rs 664ms 3.3ms 5.1MB 653ms 0ms wasmer/llvm 2.2.1
wasm 2.rs 685ms 0.8ms 9.2MB 673ms 0ms wasmedgec 0.9.1
wasm 2.rs 721ms 0.3ms 9.0MB 710ms 0ms wasmtime 0.36.0
wasm 2.rs 753ms 1.5ms 47.4MB 773ms 10ms node 16.15.0

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 2.chpl 56ms 0.5ms 32.4MB 50ms 0ms chpl 1.26.0
wasm 1.rs 56ms 11ms 6.0MB 40ms 0ms wasmer/llvm 2.2.1
wasm 1.rs 59ms 0.7ms 11.2MB 43ms 0ms wasmtime 0.36.0
wasm 1.rs 61ms 0.8ms 9.3MB 50ms 0ms wasmedgec 0.9.1
wasm 2.rs 75ms 8.8ms 5.8MB 57ms 0ms wasmer/llvm 2.2.1
wasm 2.rs 80ms 1.2ms 9.7MB 70ms 0ms wasmedgec 0.9.1
wasm 2.rs 81ms 4.3ms 9.4MB 67ms 0ms wasmtime 0.36.0
wasm 1.rs 143ms 2.4ms 47.4MB 167ms 10ms node 16.15.0
wasm 2.rs 166ms 3.4ms 47.5MB 180ms 10ms node 16.15.0

pidigits

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 2.chpl 598ms 3.9ms 34.1MB 580ms 7ms chpl 1.26.0
wasm 2.rs 3578ms 0.2ms 6.9MB 3567ms 0ms wasmer/llvm 2.2.1
wasm 2.rs 3678ms 24ms 10.9MB 3667ms 0ms wasmedgec 0.9.1
wasm 2.rs 4112ms 42ms 47.5MB 4150ms 17ms node 16.15.0
wasm 2.rs 4174ms 1.4ms 10.9MB 4160ms 0ms wasmtime 0.36.0

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 2.chpl 152ms 0.7ms 34.1MB 143ms 0ms chpl 1.26.0
wasm 2.rs 848ms 13ms 6.6MB 830ms 0ms wasmer/llvm 2.2.1
wasm 2.rs 878ms 4.6ms 10.6MB 863ms 0ms wasmedgec 0.9.1
wasm 2.rs 988ms 1.7ms 10.6MB 977ms 0ms wasmtime 0.36.0
wasm 2.rs 1052ms 10ms 47.4MB 1097ms 10ms node 16.15.0

regex-redux

Input: 2500000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 3.chpl 1944ms 8.6ms 251.1MB 1770ms 160ms chpl 1.26.0

Input: 250000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 3.chpl 214ms 1.0ms 56.8MB 193ms 10ms chpl 1.26.0

secp256k1

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 0.rs 440ms 1.5ms 9.9MB 430ms 0ms wasmedgec 0.9.1
wasm 0.rs 442ms 0.9ms 5.0MB 430ms 0ms wasmer/llvm 2.2.1
wasm 0.rs 489ms 1.3ms 11.4MB 473ms 0ms wasmtime 0.36.0
wasm 0.rs 520ms 4.1ms 46.2MB 547ms 7ms node 16.15.0
chapel 1.chpl 1551ms 1.4ms 32.3MB 1540ms 7ms chpl 1.26.0
wasm 1.rs 4580ms 24ms 5.0MB 4570ms 0ms wasmer/llvm 2.2.1
wasm 1.rs 4639ms 16ms 10.3MB 4620ms 0ms wasmedgec 0.9.1
wasm 1.rs 4950ms 18ms 51.5MB 5000ms 7ms node 16.15.0
wasm 1.rs timeout 0.0ms 0.0MB 0ms 0ms wasmtime 0.36.0

Input: 500

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 0.rs 119ms 9.5ms 6.5MB 107ms 0ms wasmer/llvm 2.2.1
wasm 0.rs 119ms 1.1ms 9.9MB 103ms 0ms wasmedgec 0.9.1
wasm 0.rs 130ms 1.3ms 9.8MB 117ms 0ms wasmtime 0.36.0
wasm 0.rs 202ms 0.6ms 46.4MB 230ms 7ms node 16.15.0
chapel 1.chpl 404ms 1.2ms 32.3MB 393ms 7ms chpl 1.26.0
wasm 1.rs 1150ms 10ms 5.8MB 1133ms 0ms wasmer/llvm 2.2.1
wasm 1.rs 1179ms 11ms 10.3MB 1163ms 0ms wasmedgec 0.9.1
wasm 1.rs 1331ms 8.7ms 51.6MB 1380ms 10ms node 16.15.0
wasm 1.rs 1469ms 4.7ms 10.1MB 1460ms 0ms wasmtime 0.36.0

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 1-m.chpl 2311ms 70ms 32.5MB 4457ms 10ms chpl 1.26.0
wasm 2.rs 4132ms 6.0ms 9.7MB 4120ms 0ms wasmedgec 0.9.1
wasm 7.rs 4217ms 0.7ms 6.1MB 4203ms 0ms wasmer/llvm 2.2.1
wasm 2.rs 4257ms 1.8ms 51.2MB 4283ms 3ms node 16.15.0
wasm 7.rs 4268ms 0.6ms 9.7MB 4253ms 0ms wasmedgec 0.9.1
chapel 1.chpl 4377ms 1.0ms 32.4MB 4360ms 7ms chpl 1.26.0
wasm 2.rs 4393ms 0.8ms 6.3MB 4380ms 0ms wasmer/llvm 2.2.1
wasm 7.rs 4502ms 10ms 47.6MB 4520ms 7ms node 16.15.0
wasm 2.rs 4525ms 3.3ms 10.5MB 4510ms 0ms wasmtime 0.36.0
wasm 7.rs 4615ms 1.5ms 10.5MB 4600ms 0ms wasmtime 0.36.0

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 1-m.chpl 582ms 1.7ms 32.4MB 1110ms 3ms chpl 1.26.0
wasm 2.rs 1041ms 0.4ms 9.6MB 1023ms 3ms wasmedgec 0.9.1
wasm 7.rs 1059ms 2.5ms 6.1MB 1050ms 0ms wasmer/llvm 2.2.1
wasm 7.rs 1076ms 0.7ms 9.6MB 1060ms 0ms wasmedgec 0.9.1
wasm 2.rs 1102ms 1.0ms 6.2MB 1090ms 0ms wasmer/llvm 2.2.1
chapel 1.chpl 1110ms 0.6ms 32.4MB 1097ms 3ms chpl 1.26.0
wasm 2.rs 1137ms 0.7ms 10.5MB 1120ms 0ms wasmtime 0.36.0
wasm 2.rs 1137ms 0.7ms 47.5MB 1160ms 10ms node 16.15.0
wasm 7.rs 1160ms 0.7ms 11.0MB 1147ms 0ms wasmtime 0.36.0
wasm 7.rs 1197ms 3.5ms 47.5MB 1227ms 3ms node 16.15.0

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 1-m.chpl 165ms 0.5ms 32.4MB 283ms 3ms chpl 1.26.0
wasm 2.rs 270ms 0.9ms 9.6MB 257ms 0ms wasmedgec 0.9.1
wasm 7.rs 274ms 9.0ms 5.8MB 257ms 0ms wasmer/llvm 2.2.1
wasm 7.rs 279ms 1.1ms 9.6MB 267ms 0ms wasmedgec 0.9.1
wasm 2.rs 286ms 13ms 5.8MB 270ms 0ms wasmer/llvm 2.2.1
wasm 2.rs 293ms 2.3ms 11.0MB 280ms 0ms wasmtime 0.36.0
chapel 1.chpl 295ms 1.0ms 32.4MB 283ms 3ms chpl 1.26.0
wasm 7.rs 297ms 1.1ms 9.4MB 287ms 0ms wasmtime 0.36.0
wasm 2.rs 363ms 4.7ms 47.4MB 380ms 10ms node 16.15.0
wasm 7.rs 374ms 2.0ms 47.5MB 397ms 7ms node 16.15.0