Wasm VS D benchmarks

Current benchmark data was generated on Sat Mar 29 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
d 1.d 1806ms 33ms 312.6MB 1780ms 33ms ldc2 1.40.1
wasm 5.rs 1813ms 71ms 33.1MB 1793ms 7ms wasmtime 31.0.0
wasm 3.rs 1852ms 15ms 49.3MB 1827ms 13ms wasmtime 31.0.0
wasm 4.rs 1860ms 23ms 33.3MB 1840ms 10ms wasmtime 31.0.0
d 1.d 2698ms 1.3ms 314.7MB 2880ms 47ms dmd 2.110.0

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 166ms 2.5ms 210.0MB 137ms 17ms ldc2 1.40.1
wasm 5.rs 171ms 3.6ms 19.2MB 160ms 0ms wasmtime 31.0.0
wasm 4.rs 180ms 2.7ms 19.1MB 167ms 0ms wasmtime 31.0.0
wasm 3.rs 180ms 4.1ms 21.1MB 167ms 0ms wasmtime 31.0.0
d 1.d 233ms 6.2ms 212.0MB 207ms 10ms dmd 2.110.0

coro-prime-sieve

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 3.rs 1134ms 3.5ms 19.4MB 1117ms 0ms wasmtime 31.0.0
d 1.d timeout 0.0ms 17.7MB 4970ms 20ms dmd 2.110.0
d 1.d timeout 0.0ms 16.5MB 4967ms 23ms ldc2 1.40.1

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 3.rs 80ms 1.6ms 18.0MB 70ms 0ms wasmtime 31.0.0
d 1.d 1037ms 6.6ms 12.3MB 1007ms 17ms ldc2 1.40.1
d 1.d 1317ms 7.0ms 14.6MB 1290ms 13ms dmd 2.110.0

edigits

Input: 250001

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 1.rs 417ms 2.9ms 18.6MB 403ms 0ms wasmtime 31.0.0
d 1.d 2552ms 6.6ms 8.1MB 2533ms 0ms ldc2 1.40.1
d 1.d 2906ms 4.9ms 10.5MB 2890ms 0ms dmd 2.110.0

Input: 100000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 1.rs 115ms 2.0ms 17.9MB 100ms 0ms wasmtime 31.0.0
d 1.d 443ms 2.4ms 8.0MB 430ms 0ms ldc2 1.40.1
d 1.d 531ms 5.1ms 10.2MB 517ms 0ms dmd 2.110.0

fannkuch-redux

Input: 11

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1-im.d 379ms 4.8ms 2.9MB 1423ms 0ms ldc2 1.40.1
d 2-im.d 1118ms 4.1ms 3.0MB 4320ms 0ms ldc2 1.40.1
d 1-i.d 1485ms 1.1ms 2.9MB 1473ms 0ms ldc2 1.40.1
d 1.d 3110ms 7.8ms 2.8MB 3103ms 0ms ldc2 1.40.1
d 2-i.d 3237ms 0.3ms 2.9MB 3230ms 0ms ldc2 1.40.1
d 1.d 3555ms 11ms 4.6MB 3543ms 0ms dmd 2.110.0
wasm 1.rs 4164ms 21ms 16.8MB 4147ms 0ms wasmtime 31.0.0
d 1-im.d 4484ms 26ms 4.8MB 17543ms 3ms dmd 2.110.0
d 1-i.d timeout 0.0ms 4.5MB 4990ms 0ms dmd 2.110.0
d 2-i.d timeout 0.0ms 4.5MB 4990ms 0ms dmd 2.110.0
d 2-im.d timeout 0.0ms 4.8MB 19730ms 3ms dmd 2.110.0

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1-im.d 37ms 0.4ms 3.0MB 110ms 0ms ldc2 1.40.1
d 2-im.d 99ms 1.3ms 3.0MB 347ms 0ms ldc2 1.40.1
d 1-i.d 124ms 0.4ms 2.9MB 113ms 0ms ldc2 1.40.1
d 1.d 263ms 0.9ms 2.9MB 253ms 0ms ldc2 1.40.1
d 2-i.d 268ms 0.8ms 2.9MB 260ms 0ms ldc2 1.40.1
d 1.d 300ms 1.1ms 4.6MB 290ms 0ms dmd 2.110.0
wasm 1.rs 348ms 2.4ms 17.4MB 337ms 0ms wasmtime 31.0.0
d 1-im.d 380ms 3.5ms 4.9MB 1427ms 0ms dmd 2.110.0
d 2-im.d 527ms 5.2ms 4.8MB 2000ms 0ms dmd 2.110.0
d 1-i.d 866ms 17ms 4.9MB 860ms 0ms dmd 2.110.0
d 2-i.d 1377ms 12ms 4.5MB 1367ms 0ms dmd 2.110.0

fasta

Input: 2500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 194ms 2.0ms 49.1MB 180ms 0ms ldc2 1.40.1
wasm 1.rs 236ms 1.4ms 17.3MB 217ms 3ms wasmtime 31.0.0
d 1.d 623ms 3.0ms 51.5MB 613ms 0ms dmd 2.110.0

Input: 250000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 24ms 0.4ms 11.0MB 10ms 0ms ldc2 1.40.1
wasm 1.rs 32ms 0.4ms 17.6MB 20ms 0ms wasmtime 31.0.0
d 1.d 67ms 0.2ms 11.1MB 60ms 0ms dmd 2.110.0

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 1.7ms 0.1ms 3.0MB 0ms 0ms ldc2 1.40.1
d 1.d 2.4ms 0.3ms 5.1MB 0ms 0ms dmd 2.110.0
wasm 1.rs 6.7ms 0.5ms 17.2MB 0ms 0ms wasmtime 31.0.0

lru

Input: 1000 1000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 1.rs 89ms 0.8ms 17.3MB 80ms 0ms wasmtime 31.0.0
d 1.d 130ms 1.7ms 5.9MB 123ms 0ms ldc2 1.40.1
d 1.d 176ms 2.9ms 7.9MB 170ms 0ms dmd 2.110.0

Input: 1000 3000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 1.rs 250ms 1.4ms 16.9MB 237ms 0ms wasmtime 31.0.0
d 1.d 377ms 1.7ms 5.9MB 363ms 17ms ldc2 1.40.1
d 1.d 518ms 5.4ms 8.3MB 503ms 17ms dmd 2.110.0

Input: 100 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 1.rs 48ms 1.8ms 17.4MB 40ms 0ms wasmtime 31.0.0
d 1.d 57ms 0.8ms 6.1MB 47ms 0ms ldc2 1.40.1
d 1.d 82ms 1.5ms 8.3MB 70ms 0ms dmd 2.110.0

mandelbrot

Input: 5000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 294ms 0.8ms 7.0MB 280ms 0ms ldc2 1.40.1
wasm 8.rs 821ms 2.1ms 20.2MB 810ms 0ms wasmtime 31.0.0
d 1.d 2202ms 23ms 9.0MB 2193ms 0ms dmd 2.110.0

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 15ms 0.1ms 3.0MB 10ms 0ms ldc2 1.40.1
wasm 8.rs 43ms 1.1ms 17.4MB 30ms 0ms wasmtime 31.0.0
d 1.d 98ms 3.5ms 4.5MB 90ms 0ms dmd 2.110.0

merkletrees

Input: 17

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 1.rs 927ms 58ms 41.1MB 910ms 10ms wasmtime 31.0.0
d 1.d 965ms 16ms 312.6MB 933ms 33ms ldc2 1.40.1
d 1.d 1744ms 13ms 314.7MB 1880ms 43ms dmd 2.110.0

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 195ms 2.0ms 312.6MB 160ms 27ms ldc2 1.40.1
wasm 1.rs 197ms 2.3ms 23.3MB 180ms 0ms wasmtime 31.0.0
d 1.d 336ms 1.6ms 314.9MB 303ms 27ms dmd 2.110.0

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 2.d 361ms 0.7ms 2.8MB 350ms 0ms ldc2 1.40.1
d 1.d 362ms 1.6ms 2.9MB 350ms 0ms ldc2 1.40.1
wasm 1.rs 411ms 2.4ms 17.1MB 400ms 0ms wasmtime 31.0.0
wasm 2.rs 583ms 2.8ms 17.0MB 570ms 0ms wasmtime 31.0.0
d 1.d 682ms 2.8ms 4.6MB 670ms 0ms dmd 2.110.0
d 2.d 2081ms 79ms 4.5MB 2070ms 0ms dmd 2.110.0

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 39ms 0.4ms 2.9MB 30ms 0ms ldc2 1.40.1
d 2.d 40ms 0.3ms 2.8MB 30ms 0ms ldc2 1.40.1
wasm 1.rs 49ms 0.6ms 17.0MB 40ms 0ms wasmtime 31.0.0
wasm 2.rs 66ms 1.3ms 17.2MB 53ms 0ms wasmtime 31.0.0
d 1.d 73ms 0.3ms 4.5MB 60ms 0ms dmd 2.110.0
d 2.d 208ms 2.7ms 4.6MB 200ms 0ms dmd 2.110.0

nsieve

Input: 12

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 324ms 19ms 45.1MB 307ms 0ms ldc2 1.40.1
d 1.d 368ms 7.4ms 77.3MB 353ms 0ms dmd 2.110.0
wasm 2.rs 379ms 5.8ms 22.0MB 367ms 0ms wasmtime 31.0.0
wasm 1.rs 511ms 9.4ms 56.3MB 493ms 0ms wasmtime 31.0.0
d 2.d 846ms 3.0ms 49.1MB 827ms 7ms ldc2 1.40.1
d 2.d 1177ms 6.0ms 51.2MB 1163ms 3ms dmd 2.110.0

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 64ms 2.8ms 15.0MB 50ms 0ms ldc2 1.40.1
d 1.d 77ms 2.3ms 27.2MB 67ms 0ms dmd 2.110.0
wasm 1.rs 96ms 2.9ms 27.1MB 83ms 0ms wasmtime 31.0.0
wasm 2.rs 98ms 0.4ms 18.3MB 90ms 0ms wasmtime 31.0.0
d 2.d 209ms 1.8ms 17.0MB 200ms 0ms ldc2 1.40.1
d 2.d 294ms 2.2ms 18.9MB 280ms 0ms dmd 2.110.0

pidigits

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 2.rs 2218ms 13ms 18.1MB 2207ms 0ms wasmtime 31.0.0
d 1.d 2436ms 6.3ms 8.0MB 2400ms 397ms ldc2 1.40.1
d 1.d 4333ms 19ms 10.2MB 4277ms 470ms dmd 2.110.0

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 2.rs 524ms 3.2ms 17.3MB 510ms 0ms wasmtime 31.0.0
d 1.d 584ms 0.8ms 8.0MB 567ms 103ms ldc2 1.40.1
d 1.d 1032ms 2.7ms 10.2MB 1003ms 110ms dmd 2.110.0

secp256k1

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 1.rs 3616ms 7.7ms 16.8MB 3603ms 0ms wasmtime 31.0.0
d 1.d 4801ms 21ms 3.9MB 4750ms 373ms ldc2 1.40.1
d 1.d timeout 0.0ms 6.6MB 4963ms 277ms dmd 2.110.0

Input: 500

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 1.rs 916ms 7.5ms 16.8MB 900ms 0ms wasmtime 31.0.0
d 1.d 1197ms 5.4ms 3.9MB 1177ms 90ms ldc2 1.40.1
d 1.d 2091ms 14ms 6.6MB 2057ms 127ms dmd 2.110.0

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 3594ms 1.3ms 3.9MB 3580ms 0ms ldc2 1.40.1
wasm 2.rs 3601ms 3.0ms 16.9MB 3587ms 0ms wasmtime 31.0.0
d 1.d 3667ms 17ms 5.9MB 3657ms 0ms dmd 2.110.0
wasm 7.rs 4896ms 5.3ms 16.9MB 4883ms 0ms wasmtime 31.0.0

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 901ms 1.7ms 3.5MB 890ms 0ms ldc2 1.40.1
wasm 2.rs 910ms 5.9ms 17.4MB 897ms 0ms wasmtime 31.0.0
d 1.d 924ms 11ms 5.1MB 913ms 0ms dmd 2.110.0
wasm 7.rs 1232ms 2.6ms 17.1MB 1220ms 0ms wasmtime 31.0.0

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 228ms 0.5ms 3.1MB 220ms 0ms ldc2 1.40.1
d 1.d 234ms 2.2ms 7.5MB 223ms 0ms dmd 2.110.0
wasm 2.rs 236ms 2.5ms 16.7MB 223ms 0ms wasmtime 31.0.0
wasm 7.rs 315ms 1.2ms 17.2MB 300ms 0ms wasmtime 31.0.0