Wasm VS Javascript benchmarks

Current benchmark data was generated on Mon Jun 23 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 947ms 18ms 176.8MB 1447ms 207ms bun 1.2.17
javascript 1.js 1054ms 6.2ms 453.4MB 980ms 223ms node 24.2.0
wasm 5.rs 1914ms 16ms 35.7MB 1893ms 10ms wasmtime 34.0.0
wasm 4.rs 1932ms 53ms 33.7MB 1910ms 10ms wasmtime 34.0.0
wasm 3.rs 1979ms 111ms 50.0MB 1950ms 20ms wasmtime 34.0.0

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 100ms 0.8ms 77.5MB 77ms 27ms bun 1.2.17
javascript 1.js 127ms 1.5ms 81.2MB 130ms 20ms node 24.2.0
wasm 5.rs 172ms 1.4ms 19.8MB 157ms 0ms wasmtime 34.0.0
wasm 4.rs 174ms 2.0ms 19.8MB 163ms 0ms wasmtime 34.0.0
wasm 3.rs 181ms 4.1ms 21.7MB 163ms 0ms wasmtime 34.0.0

coro-prime-sieve

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 3.rs 1130ms 4.9ms 20.1MB 1113ms 7ms wasmtime 34.0.0
javascript 1.js 1629ms 9.3ms 189.9MB 1603ms 103ms node 24.2.0
javascript 1.js 2507ms 85ms 101.4MB 2553ms 67ms bun 1.2.17

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 3.rs 80ms 1.0ms 18.6MB 70ms 0ms wasmtime 34.0.0
javascript 1.js 158ms 2.0ms 75.4MB 140ms 23ms node 24.2.0
javascript 1.js 200ms 4.1ms 86.8MB 237ms 30ms bun 1.2.17

edigits

Input: 250001

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 302ms 4.5ms 67.7MB 320ms 23ms node 24.2.0
wasm 1.rs 418ms 0.4ms 19.3MB 403ms 0ms wasmtime 34.0.0
javascript 1.js 519ms 3.3ms 75.7MB 497ms 20ms bun 1.2.17

Input: 100000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 1.rs 116ms 0.9ms 18.8MB 103ms 0ms wasmtime 34.0.0
javascript 1.js 136ms 13ms 64.5MB 120ms 17ms node 24.2.0
javascript 1.js 512ms 13ms 65.7MB 487ms 23ms bun 1.2.17

fannkuch-redux

Input: 11

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 1.rs 4068ms 6.6ms 17.6MB 4053ms 0ms wasmtime 34.0.0

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 1.rs 348ms 3.7ms 17.6MB 337ms 0ms wasmtime 34.0.0

fasta

Input: 2500000

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

Input: 250000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 1.rs 32ms 0.8ms 17.7MB 20ms 0ms wasmtime 34.0.0

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 1.rs 7.1ms 0.1ms 16.7MB 0ms 0ms wasmtime 34.0.0
javascript 1.js 13ms 0.5ms 31.3MB 0ms 0ms bun 1.2.17
javascript 1.js 33ms 1.9ms 50.9MB 18ms 8ms node 24.2.0

lru

Input: 1000 1000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 1.rs 93ms 2.2ms 18.2MB 80ms 0ms wasmtime 34.0.0
javascript 2.js 305ms 0.7ms 65.3MB 293ms 10ms node 24.2.0
javascript 1.js 565ms 3.2ms 63.6MB 550ms 13ms node 24.2.0
javascript 2.js 669ms 8.0ms 122.9MB 737ms 53ms bun 1.2.17
javascript 1.js 843ms 21ms 106.1MB 907ms 93ms bun 1.2.17

Input: 1000 3000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 1.rs 255ms 1.5ms 17.7MB 240ms 0ms wasmtime 34.0.0
javascript 2.js 835ms 6.9ms 71.9MB 820ms 17ms node 24.2.0
javascript 1.js 1619ms 16ms 70.0MB 1603ms 13ms node 24.2.0
javascript 2.js 1893ms 6.7ms 123.5MB 2067ms 73ms bun 1.2.17
javascript 1.js 2431ms 36ms 105.9MB 2720ms 160ms bun 1.2.17

Input: 100 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 1.rs 48ms 0.7ms 17.9MB 40ms 0ms wasmtime 34.0.0
javascript 2.js 163ms 1.1ms 59.8MB 157ms 10ms node 24.2.0
javascript 1.js 166ms 2.3ms 61.0MB 150ms 10ms node 24.2.0
javascript 1.js 327ms 3.4ms 130.8MB 357ms 80ms bun 1.2.17
javascript 2.js 368ms 3.7ms 124.9MB 393ms 60ms bun 1.2.17

mandelbrot

Input: 5000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 8.rs 832ms 1.4ms 21.1MB 820ms 0ms wasmtime 34.0.0

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 8.rs 44ms 1.0ms 18.2MB 30ms 0ms wasmtime 34.0.0

merkletrees

Input: 17

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1-m.js 473ms 10ms 137.8MB 617ms 117ms bun 1.2.17
javascript 1.js 565ms 6.5ms 230.7MB 567ms 110ms node 24.2.0
wasm 1.rs 903ms 21ms 41.8MB 877ms 10ms wasmtime 34.0.0

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 116ms 2.9ms 84.8MB 100ms 33ms bun 1.2.17
javascript 1.js 160ms 2.6ms 101.3MB 157ms 40ms node 24.2.0
wasm 1.rs 196ms 4.9ms 23.8MB 180ms 0ms wasmtime 34.0.0

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 1.rs 404ms 1.2ms 17.7MB 390ms 0ms wasmtime 34.0.0
javascript 6.js 456ms 0.7ms 59.0MB 450ms 0ms node 24.2.0
wasm 2.rs 562ms 1.1ms 17.8MB 550ms 0ms wasmtime 34.0.0
javascript 6.js 599ms 2.6ms 44.9MB 603ms 7ms bun 1.2.17

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 1.rs 49ms 0.5ms 17.9MB 37ms 0ms wasmtime 34.0.0
wasm 2.rs 66ms 1.6ms 18.0MB 50ms 0ms wasmtime 34.0.0
javascript 6.js 79ms 1.4ms 58.9MB 63ms 10ms node 24.2.0
javascript 6.js 82ms 2.6ms 44.9MB 83ms 10ms bun 1.2.17

nsieve

Input: 12

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 2.rs 381ms 1.9ms 22.9MB 367ms 0ms wasmtime 34.0.0
wasm 1.rs 613ms 42ms 56.9MB 597ms 10ms wasmtime 34.0.0

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 1.rs 95ms 0.7ms 27.6MB 80ms 0ms wasmtime 34.0.0
wasm 2.rs 98ms 1.0ms 20.9MB 87ms 0ms wasmtime 34.0.0

pidigits

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 2.rs 2220ms 15ms 18.7MB 2203ms 0ms wasmtime 34.0.0
javascript 3.js 4612ms 24ms 122.4MB 4567ms 43ms node 24.2.0

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 2.rs 523ms 2.7ms 18.4MB 510ms 0ms wasmtime 34.0.0
javascript 3.js 1016ms 4.2ms 74.0MB 997ms 17ms node 24.2.0

secp256k1

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 2530ms 12ms 61.9MB 2537ms 10ms node 24.2.0
javascript 1.js 2803ms 2.3ms 82.0MB 2810ms 60ms bun 1.2.17
wasm 1.rs 3588ms 10ms 17.7MB 3573ms 0ms wasmtime 34.0.0

Input: 500

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 704ms 57ms 60.1MB 707ms 10ms node 24.2.0
javascript 1.js 729ms 4.2ms 81.9MB 727ms 27ms bun 1.2.17
wasm 1.rs 900ms 5.2ms 18.0MB 887ms 0ms wasmtime 34.0.0

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 6-m.js 2170ms 4.5ms 118.6MB 8280ms 63ms node 24.2.0
wasm 2.rs 3609ms 13ms 17.7MB 3590ms 0ms wasmtime 34.0.0
wasm 7.rs 4900ms 13ms 17.7MB 4887ms 0ms wasmtime 34.0.0

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 6-m.js 654ms 2.1ms 118.9MB 2317ms 63ms node 24.2.0
wasm 2.rs 908ms 2.9ms 19.5MB 893ms 0ms wasmtime 34.0.0
wasm 7.rs 1231ms 2.5ms 18.1MB 1220ms 0ms wasmtime 34.0.0

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 2.rs 234ms 0.4ms 17.8MB 220ms 0ms wasmtime 34.0.0
javascript 6-m.js 271ms 4.8ms 115.9MB 830ms 53ms node 24.2.0
wasm 7.rs 316ms 2.7ms 17.4MB 300ms 0ms wasmtime 34.0.0