Wasm VS Javascript benchmarks

Current benchmark data was generated on Mon May 19 2025, 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
javascript 1-m.js 983ms 44ms 182.9MB 1513ms 227ms bun 1.2.13
javascript 1.js 1066ms 5.1ms 468.4MB 1000ms 220ms node 24.0.2
wasm 4.rs 1799ms 13ms 33.8MB 1780ms 10ms wasmtime 32.0.0
wasm 5.rs 1807ms 26ms 33.8MB 1787ms 3ms wasmtime 32.0.0
wasm 3.rs 1837ms 50ms 49.8MB 1807ms 17ms wasmtime 32.0.0

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 102ms 0.9ms 77.4MB 83ms 23ms bun 1.2.13
javascript 1.js 130ms 2.5ms 80.7MB 130ms 27ms node 24.0.2
wasm 5.rs 170ms 0.4ms 19.8MB 157ms 0ms wasmtime 32.0.0
wasm 3.rs 172ms 3.8ms 21.7MB 160ms 0ms wasmtime 32.0.0
wasm 4.rs 172ms 1.7ms 19.7MB 160ms 0ms wasmtime 32.0.0

coro-prime-sieve

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 3.rs 1141ms 15ms 20.2MB 1127ms 0ms wasmtime 32.0.0
javascript 1.js 1619ms 9.4ms 188.9MB 1593ms 103ms node 24.0.2
javascript 1.js 2477ms 8.3ms 99.5MB 2507ms 57ms bun 1.2.13

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 3.rs 83ms 1.7ms 18.3MB 70ms 0ms wasmtime 32.0.0
javascript 1.js 158ms 3.0ms 74.0MB 143ms 23ms node 24.0.2
javascript 1.js 198ms 1.8ms 85.0MB 220ms 30ms bun 1.2.13

edigits

Input: 250001

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 285ms 5.4ms 66.5MB 297ms 27ms node 24.0.2
wasm 1.rs 420ms 2.0ms 19.4MB 407ms 0ms wasmtime 32.0.0
javascript 1.js 520ms 3.2ms 75.8MB 493ms 20ms bun 1.2.13

Input: 100000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 1.rs 114ms 1.7ms 19.0MB 100ms 0ms wasmtime 32.0.0
javascript 1.js 127ms 2.1ms 62.6MB 113ms 17ms node 24.0.2
javascript 1.js 499ms 1.6ms 65.8MB 480ms 17ms bun 1.2.13

fannkuch-redux

Input: 11

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 1.rs 4187ms 38ms 17.3MB 4177ms 0ms wasmtime 32.0.0

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 1.rs 350ms 1.9ms 19.2MB 340ms 0ms wasmtime 32.0.0

fasta

Input: 2500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 1.rs 234ms 2.0ms 17.9MB 220ms 0ms wasmtime 32.0.0

Input: 250000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 1.rs 31ms 0.9ms 17.8MB 20ms 0ms wasmtime 32.0.0

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 1.rs 6.8ms 0.2ms 18.0MB 0ms 0ms wasmtime 32.0.0
javascript 1.js 13ms 0.6ms 31.9MB 0ms 0ms bun 1.2.13
javascript 1.js 32ms 0.5ms 50.0MB 16ms 8ms node 24.0.2

lru

Input: 1000 1000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 1.rs 89ms 0.7ms 17.5MB 77ms 0ms wasmtime 32.0.0
javascript 2.js 305ms 1.5ms 64.5MB 297ms 10ms node 24.0.2
javascript 1.js 571ms 4.9ms 63.0MB 553ms 10ms node 24.0.2
javascript 2.js 665ms 6.1ms 124.1MB 717ms 50ms bun 1.2.13
javascript 1.js 825ms 5.5ms 109.9MB 920ms 73ms bun 1.2.13

Input: 1000 3000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 1.rs 252ms 2.7ms 19.4MB 240ms 0ms wasmtime 32.0.0
javascript 2.js 835ms 0.7ms 70.6MB 817ms 20ms node 24.0.2
javascript 1.js 1622ms 1.9ms 69.6MB 1603ms 13ms node 24.0.2
javascript 2.js 1852ms 9.1ms 124.3MB 2033ms 73ms bun 1.2.13
javascript 1.js 2389ms 8.5ms 109.5MB 2717ms 163ms bun 1.2.13

Input: 100 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 1.rs 47ms 0.6ms 17.9MB 33ms 0ms wasmtime 32.0.0
javascript 2.js 166ms 2.3ms 59.0MB 160ms 10ms node 24.0.2
javascript 1.js 169ms 1.1ms 60.0MB 160ms 10ms node 24.0.2
javascript 1.js 320ms 1.9ms 114.0MB 363ms 73ms bun 1.2.13
javascript 2.js 361ms 1.8ms 123.9MB 380ms 53ms bun 1.2.13

mandelbrot

Input: 5000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 8.rs 819ms 2.4ms 20.8MB 803ms 0ms wasmtime 32.0.0

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 8.rs 43ms 0.2ms 17.9MB 30ms 0ms wasmtime 32.0.0

merkletrees

Input: 17

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1-m.js 486ms 0.8ms 138.7MB 660ms 113ms bun 1.2.13
javascript 1.js 579ms 3.1ms 229.5MB 577ms 120ms node 24.0.2
wasm 1.rs 901ms 10ms 43.7MB 873ms 10ms wasmtime 32.0.0

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 119ms 4.5ms 85.8MB 107ms 30ms bun 1.2.13
javascript 1.js 163ms 3.2ms 100.3MB 160ms 33ms node 24.0.2
wasm 1.rs 197ms 2.6ms 23.7MB 180ms 0ms wasmtime 32.0.0

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 1.rs 407ms 0.1ms 18.2MB 393ms 0ms wasmtime 32.0.0
javascript 6.js 458ms 3.2ms 58.0MB 443ms 10ms node 24.0.2
wasm 2.rs 563ms 1.8ms 17.8MB 550ms 0ms wasmtime 32.0.0
javascript 6.js 604ms 7.0ms 44.5MB 603ms 3ms bun 1.2.13

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 1.rs 49ms 0.9ms 18.0MB 40ms 0ms wasmtime 32.0.0
wasm 2.rs 65ms 1.2ms 18.1MB 53ms 0ms wasmtime 32.0.0
javascript 6.js 80ms 1.6ms 58.2MB 70ms 7ms node 24.0.2
javascript 6.js 82ms 2.8ms 44.5MB 77ms 3ms bun 1.2.13

nsieve

Input: 12

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 2.rs 368ms 9.3ms 22.8MB 357ms 0ms wasmtime 32.0.0
wasm 1.rs 476ms 1.3ms 56.7MB 460ms 0ms wasmtime 32.0.0

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 1.rs 96ms 3.0ms 27.5MB 83ms 0ms wasmtime 32.0.0
wasm 2.rs 97ms 2.1ms 18.9MB 83ms 0ms wasmtime 32.0.0

pidigits

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 2.rs 2153ms 20ms 19.1MB 2140ms 0ms wasmtime 32.0.0
javascript 3.js 4622ms 14ms 122.3MB 4573ms 47ms node 24.0.2

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 2.rs 504ms 1.2ms 18.1MB 490ms 0ms wasmtime 32.0.0
javascript 3.js 1012ms 8.0ms 73.2MB 993ms 13ms node 24.0.2

secp256k1

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 2584ms 16ms 61.1MB 2590ms 10ms node 24.0.2
javascript 1.js 2875ms 42ms 82.4MB 2890ms 57ms bun 1.2.13
wasm 1.rs 3424ms 13ms 17.6MB 3410ms 0ms wasmtime 32.0.0

Input: 500

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 687ms 3.9ms 58.5MB 697ms 10ms node 24.0.2
javascript 1.js 746ms 8.0ms 82.4MB 747ms 30ms bun 1.2.13
wasm 1.rs 862ms 4.0ms 17.6MB 850ms 0ms wasmtime 32.0.0

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 6-m.js 2184ms 8.5ms 118.8MB 8193ms 60ms node 24.0.2
wasm 2.rs 3700ms 13ms 17.7MB 3687ms 0ms wasmtime 32.0.0
wasm 7.rs 4896ms 4.6ms 17.6MB 4883ms 0ms wasmtime 32.0.0

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 6-m.js 663ms 3.7ms 117.6MB 2293ms 53ms node 24.0.2
wasm 2.rs 932ms 4.9ms 17.6MB 920ms 0ms wasmtime 32.0.0
wasm 7.rs 1230ms 0.5ms 18.1MB 1220ms 0ms wasmtime 32.0.0

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 2.rs 238ms 0.5ms 18.2MB 227ms 0ms wasmtime 32.0.0
javascript 6-m.js 269ms 2.4ms 112.1MB 823ms 50ms node 24.0.2
wasm 7.rs 314ms 0.7ms 17.9MB 300ms 0ms wasmtime 32.0.0