Odin 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.)

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
odin 1.odin 2.1ms 1.0ms 0.9MB 0ms 0ms odin 2022
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
wasm 1.rs 75ms 1.7ms 42.1MB 90ms 2ms node 16.15.0

lru

Input: 1000 1000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 1.rs 125ms 0.5ms 6.4MB 117ms 0ms wasmer/llvm 2.2.1
wasm 1.rs 139ms 3.1ms 9.3MB 127ms 0ms wasmedgec 0.9.1
wasm 1.rs 158ms 2.5ms 10.7MB 143ms 0ms wasmtime 0.36.0
odin 1.odin 176ms 1.5ms 1.8MB 160ms 0ms odin 2022
wasm 1.rs 218ms 2.1ms 43.5MB 230ms 7ms node 16.15.0

Input: 1000 3000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 1.rs 369ms 3.8ms 6.4MB 357ms 0ms wasmer/llvm 2.2.1
wasm 1.rs 396ms 3.4ms 9.3MB 387ms 0ms wasmedgec 0.9.1
wasm 1.rs 448ms 0.7ms 11.0MB 437ms 0ms wasmtime 0.36.0
wasm 1.rs 483ms 2.8ms 43.4MB 497ms 7ms node 16.15.0
odin 1.odin 517ms 3.6ms 1.8MB 503ms 0ms odin 2022

Input: 100 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 1.rs 71ms 15ms 6.2MB 50ms 0ms wasmer/llvm 2.2.1
wasm 1.rs 75ms 2.8ms 9.2MB 67ms 0ms wasmedgec 0.9.1
wasm 1.rs 77ms 1.4ms 9.3MB 63ms 0ms wasmtime 0.36.0
odin 1.odin 82ms 0.2ms 0.8MB 70ms 0ms odin 2022
wasm 1.rs 151ms 1.5ms 43.4MB 170ms 0ms node 16.15.0

mandelbrot

Input: 5000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 8.rs 1061ms 2.0ms 46.5MB 1073ms 0ms node 16.15.0
wasm 8.rs 1099ms 1.0ms 12.0MB 1090ms 0ms wasmedgec 0.9.1
wasm 8.rs 1168ms 0.3ms 9.4MB 1153ms 0ms wasmer/llvm 2.2.1
wasm 8.rs 1479ms 0.6ms 13.5MB 1470ms 0ms wasmtime 0.36.0
odin 1.odin 1615ms 0.8ms 4.7MB 1603ms 0ms odin 2022

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 8.rs 57ms 0.9ms 9.2MB 40ms 0ms wasmedgec 0.9.1
wasm 8.rs 57ms 9.9ms 6.3MB 40ms 0ms wasmer/llvm 2.2.1
odin 1.odin 69ms 0.3ms 0.8MB 60ms 0ms odin 2022
wasm 8.rs 70ms 0.3ms 10.7MB 60ms 0ms wasmtime 0.36.0
wasm 8.rs 123ms 0.6ms 43.8MB 133ms 13ms node 16.15.0

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
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
odin 1.odin 2543ms 1.4ms 0.8MB 2530ms 0ms odin 2022

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
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
odin 1.odin 256ms 0.3ms 0.8MB 250ms 0ms odin 2022

nsieve

Input: 12

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 2.rs 517ms 5.8ms 11.1MB 507ms 0ms wasmer/llvm 2.2.1
wasm 2.rs 563ms 0.8ms 13.8MB 547ms 0ms wasmedgec 0.9.1
wasm 2.rs 634ms 4.3ms 15.3MB 623ms 0ms wasmtime 0.36.0
wasm 1.rs 700ms 8.8ms 47.9MB 683ms 7ms wasmedgec 0.9.1
wasm 1.rs 704ms 2.2ms 49.4MB 680ms 7ms wasmtime 0.36.0
wasm 2.rs 753ms 2.6ms 47.6MB 763ms 3ms node 16.15.0
wasm 1.rs 794ms 61ms 82.0MB 800ms 13ms node 16.15.0
wasm 1.rs 801ms 1.6ms 45.2MB 767ms 13ms wasmer/llvm 2.2.1
odin 1.odin 819ms 17ms 40.6MB 797ms 7ms odin 2022
odin 2.odin 1251ms 15ms 6.4MB 1240ms 0ms odin 2022

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
odin 1.odin 122ms 0.2ms 11.4MB 110ms 0ms odin 2022
wasm 2.rs 125ms 13ms 7.2MB 107ms 0ms wasmer/llvm 2.2.1
wasm 2.rs 137ms 0.4ms 9.9MB 127ms 0ms wasmedgec 0.9.1
wasm 1.rs 151ms 1.7ms 18.7MB 133ms 0ms wasmedgec 0.9.1
wasm 1.rs 151ms 11ms 15.8MB 130ms 0ms wasmer/llvm 2.2.1
wasm 2.rs 155ms 1.0ms 11.6MB 140ms 0ms wasmtime 0.36.0
wasm 1.rs 161ms 2.1ms 20.1MB 140ms 0ms wasmtime 0.36.0
wasm 1.rs 229ms 1.4ms 52.9MB 237ms 3ms node 16.15.0
wasm 2.rs 237ms 1.6ms 43.9MB 247ms 7ms node 16.15.0
odin 2.odin 303ms 3.5ms 2.9MB 293ms 0ms odin 2022

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
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
wasm 2.rs 4393ms 0.8ms 6.3MB 4380ms 0ms wasmer/llvm 2.2.1
odin 1.odin 4493ms 1.5ms 2.9MB 4480ms 0ms odin 2022
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
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
odin 1.odin 1128ms 0.4ms 2.4MB 1120ms 0ms odin 2022
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
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
odin 1.odin 285ms 0.2ms 1.9MB 273ms 0ms odin 2022
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
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