Lua VS Wasm benchmarks

Current benchmark data was generated on Wed Sep 28 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 1976ms 14ms 50.8MB 1950ms 13ms wasmedgec 0.11.0
wasm 3.rs 2043ms 5.8ms 37.9MB 2003ms 23ms wasmer/llvm 2.3.0
wasm 5.rs 2087ms 4.6ms 34.9MB 2067ms 3ms wasmedgec 0.11.0
wasm 4.rs 2236ms 2.2ms 34.8MB 2217ms 3ms wasmedgec 0.11.0
wasm 4.rs 2430ms 0.9ms 21.9MB 2403ms 10ms wasmer/llvm 2.3.0
wasm 3.rs 2433ms 3.1ms 42.6MB 2413ms 7ms wasmtime 1.0.1
wasm 5.rs 2533ms 5.5ms 21.8MB 2507ms 13ms wasmer/llvm 2.3.0
wasm 5.rs 2660ms 37ms 62.2MB 2660ms 13ms node 16.17.0
wasm 3.rs 2752ms 59ms 74.5MB 2747ms 20ms node 16.17.0
wasm 4.rs 2757ms 30ms 58.4MB 2767ms 3ms node 16.17.0
wasm 5.rs 2938ms 19ms 26.7MB 2920ms 0ms wasmtime 1.0.1
wasm 4.rs 3075ms 11ms 26.7MB 3060ms 3ms wasmtime 1.0.1
lua 1.lua timeout 0.0ms 0.0MB 0ms 0ms lua 5.4.4
lua 1.lua timeout 0.0ms 0.0MB 0ms 0ms luajit 2.1.0-beta3

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 3.rs 190ms 1.5ms 22.7MB 180ms 0ms wasmedgec 0.11.0
wasm 3.rs 193ms 0.7ms 10.0MB 180ms 0ms wasmer/llvm 2.3.0
wasm 5.rs 203ms 0.3ms 22.1MB 187ms 0ms wasmedgec 0.11.0
wasm 4.rs 216ms 0.4ms 21.0MB 200ms 0ms wasmedgec 0.11.0
wasm 4.rs 230ms 3.8ms 7.8MB 217ms 0ms wasmer/llvm 2.3.0
wasm 3.rs 231ms 0.7ms 14.7MB 220ms 0ms wasmtime 1.0.1
wasm 5.rs 240ms 1.3ms 7.5MB 230ms 0ms wasmer/llvm 2.3.0
wasm 5.rs 278ms 1.6ms 12.8MB 263ms 0ms wasmtime 1.0.1
wasm 4.rs 293ms 0.9ms 12.8MB 277ms 0ms wasmtime 1.0.1
wasm 5.rs 316ms 3.6ms 44.3MB 323ms 10ms node 16.17.0
wasm 3.rs 331ms 6.2ms 46.6MB 347ms 0ms node 16.17.0
wasm 4.rs 336ms 5.7ms 44.6MB 353ms 0ms node 16.17.0
lua 1.lua 426ms 22ms 25.1MB 410ms 0ms luajit 2.1.0-beta3
lua 1.lua 1044ms 6.9ms 17.3MB 1023ms 0ms lua 5.4.4

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
lua 1.lua 1.7ms 0.6ms 2.2MB 0ms 0ms luajit 2.1.0-beta3
wasm 1.rs 2.4ms 0.7ms 4.8MB 0ms 0ms wasmer/llvm 2.3.0
lua 1.lua 2.8ms 0.5ms 1.1MB 0ms 0ms lua 5.4.4
wasm 1.rs 5.7ms 0.5ms 9.3MB 0ms 0ms wasmtime 1.0.1
wasm 1.rs 6.6ms 0.4ms 18.5MB 0ms 0ms wasmedgec 0.11.0
wasm 1.rs 79ms 2.0ms 43.4MB 96ms 2ms node 16.17.0

merkletrees

Input: 17

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 1.rs 1094ms 0.3ms 43.0MB 1073ms 7ms wasmedgec 0.11.0
wasm 1.rs 1251ms 5.6ms 29.8MB 1217ms 20ms wasmer/llvm 2.3.0
wasm 1.rs 1375ms 25ms 67.4MB 1377ms 17ms node 16.17.0
wasm 1.rs 1436ms 17ms 34.7MB 1410ms 7ms wasmtime 1.0.1
lua 1.lua timeout 0.0ms 0.0MB 0ms 0ms lua 5.4.4
lua 1.lua timeout 0.0ms 0.0MB 0ms 0ms luajit 2.1.0-beta3

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 1.rs 238ms 0.2ms 25.0MB 223ms 0ms wasmedgec 0.11.0
wasm 1.rs 268ms 0.1ms 11.8MB 250ms 0ms wasmer/llvm 2.3.0
wasm 1.rs 310ms 1.8ms 17.0MB 293ms 0ms wasmtime 1.0.1
wasm 1.rs 364ms 14ms 55.4MB 377ms 3ms node 16.17.0
lua 1.lua 1528ms 19ms 35.4MB 1510ms 3ms luajit 2.1.0-beta3
lua 1.lua 2788ms 47ms 41.5MB 2760ms 13ms lua 5.4.4

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 1.rs 472ms 0.6ms 4.7MB 460ms 0ms wasmer/llvm 2.3.0
wasm 1.rs 497ms 0.3ms 11.5MB 487ms 0ms wasmtime 1.0.1
wasm 1.rs 502ms 1.3ms 18.5MB 487ms 0ms wasmedgec 0.11.0
wasm 1.rs 572ms 3.4ms 48.3MB 590ms 13ms node 16.17.0
wasm 2.rs 676ms 0.1ms 18.8MB 663ms 0ms wasmedgec 0.11.0
wasm 2.rs 677ms 0.2ms 9.7MB 667ms 0ms wasmtime 1.0.1
wasm 2.rs 702ms 0.3ms 4.9MB 690ms 0ms wasmer/llvm 2.3.0
wasm 2.rs 758ms 1.4ms 48.2MB 780ms 3ms node 16.17.0
lua 4.lua 1094ms 2.2ms 2.4MB 1083ms 0ms luajit 2.1.0-beta3
lua 4.lua timeout 0.0ms 0.0MB 0ms 0ms lua 5.4.4

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 1.rs 51ms 0.5ms 4.8MB 40ms 0ms wasmer/llvm 2.3.0
wasm 1.rs 57ms 0.8ms 9.5MB 43ms 0ms wasmtime 1.0.1
wasm 1.rs 58ms 1.0ms 17.9MB 43ms 0ms wasmedgec 0.11.0
wasm 2.rs 74ms 0.5ms 6.1MB 67ms 0ms wasmer/llvm 2.3.0
wasm 2.rs 74ms 0.3ms 11.4MB 67ms 0ms wasmtime 1.0.1
wasm 2.rs 76ms 1.0ms 20.5MB 63ms 0ms wasmedgec 0.11.0
lua 4.lua 115ms 1.3ms 1.0MB 110ms 0ms luajit 2.1.0-beta3
wasm 1.rs 149ms 2.8ms 48.1MB 170ms 10ms node 16.17.0
wasm 2.rs 171ms 2.8ms 48.5MB 190ms 13ms node 16.17.0
lua 4.lua 1177ms 5.5ms 1.1MB 1163ms 0ms lua 5.4.4

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 2.rs 4128ms 0.7ms 19.1MB 4110ms 0ms wasmedgec 0.11.0
wasm 7.rs 4206ms 3.5ms 6.4MB 4193ms 0ms wasmer/llvm 2.3.0
wasm 7.rs 4267ms 0.8ms 19.1MB 4253ms 0ms wasmedgec 0.11.0
wasm 2.rs 4274ms 21ms 48.8MB 4297ms 7ms node 16.17.0
wasm 2.rs 4400ms 9.6ms 6.1MB 4387ms 0ms wasmer/llvm 2.3.0
wasm 7.rs 4514ms 7.2ms 48.4MB 4533ms 7ms node 16.17.0
wasm 2.rs 4534ms 14ms 11.4MB 4520ms 0ms wasmtime 1.0.1
wasm 7.rs 4608ms 0.5ms 11.1MB 4600ms 0ms wasmtime 1.0.1
lua 1.lua timeout 0.0ms 0.0MB 0ms 0ms lua 5.4.4
lua 1.lua timeout 0.0ms 0.0MB 0ms 0ms luajit 2.1.0-beta3

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 2.rs 1039ms 0.4ms 19.0MB 1027ms 0ms wasmedgec 0.11.0
wasm 7.rs 1058ms 4.9ms 6.2MB 1043ms 0ms wasmer/llvm 2.3.0
wasm 7.rs 1074ms 0.6ms 18.9MB 1060ms 0ms wasmedgec 0.11.0
wasm 2.rs 1101ms 0.8ms 6.0MB 1090ms 0ms wasmer/llvm 2.3.0
wasm 2.rs 1146ms 7.0ms 48.2MB 1167ms 10ms node 16.17.0
wasm 2.rs 1146ms 0.5ms 11.1MB 1133ms 0ms wasmtime 1.0.1
wasm 7.rs 1160ms 0.8ms 11.3MB 1147ms 0ms wasmtime 1.0.1
wasm 7.rs 1210ms 2.5ms 49.3MB 1230ms 10ms node 16.17.0
lua 1.lua 1550ms 1.3ms 2.4MB 1540ms 0ms luajit 2.1.0-beta3
lua 1.lua timeout 0.0ms 0.0MB 0ms 0ms lua 5.4.4

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 2.rs 267ms 0.5ms 18.9MB 253ms 0ms wasmedgec 0.11.0
wasm 7.rs 269ms 2.9ms 4.9MB 257ms 0ms wasmer/llvm 2.3.0
wasm 7.rs 276ms 0.2ms 18.9MB 267ms 0ms wasmedgec 0.11.0
wasm 2.rs 279ms 0.7ms 4.7MB 267ms 0ms wasmer/llvm 2.3.0
wasm 2.rs 292ms 0.5ms 11.2MB 280ms 0ms wasmtime 1.0.1
wasm 7.rs 296ms 0.2ms 11.5MB 287ms 0ms wasmtime 1.0.1
wasm 2.rs 367ms 1.7ms 48.7MB 390ms 3ms node 16.17.0
wasm 7.rs 378ms 3.2ms 48.8MB 403ms 7ms node 16.17.0
lua 1.lua 390ms 0.9ms 1.1MB 380ms 0ms luajit 2.1.0-beta3
lua 1.lua timeout 0.0ms 0.0MB 0ms 0ms lua 5.4.4

coro-prime-sieve

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
lua 1.lua 560ms 3.0ms 5.0MB 547ms 0ms luajit 2.1.0-beta3
wasm 3.rs 1267ms 0.5ms 8.4MB 1247ms 3ms wasmer/llvm 2.3.0
wasm 3.rs 1440ms 3.1ms 12.8MB 1427ms 0ms wasmtime 1.0.1
wasm 3.rs 1554ms 85ms 46.5MB 1560ms 3ms node 16.17.0
wasm 3.rs 1973ms 2.4ms 21.1MB 1960ms 0ms wasmedgec 0.11.0

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
lua 1.lua 39ms 1.7ms 2.9MB 30ms 0ms luajit 2.1.0-beta3
wasm 3.rs 84ms 0.5ms 7.1MB 70ms 0ms wasmer/llvm 2.3.0
wasm 3.rs 99ms 0.9ms 11.5MB 90ms 0ms wasmtime 1.0.1
wasm 3.rs 137ms 1.7ms 19.5MB 130ms 0ms wasmedgec 0.11.0
wasm 3.rs 210ms 3.1ms 47.0MB 257ms 10ms node 16.17.0