Wasm VS D benchmarks

Current benchmark data was generated on Sun Dec 01 2024, 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
wasm 5.rs 1531ms 12ms 55.1MB 1500ms 13ms wasmer/llvm 5.0.2
wasm 4.rs 1599ms 10.0ms 54.8MB 1570ms 17ms wasmer/llvm 5.0.2
wasm 3.rs 1644ms 39ms 71.3MB 1600ms 27ms wasmer/llvm 5.0.2
d 1.d 1733ms 100ms 312.5MB 1707ms 33ms ldc2 1.39.0
wasm 5.rs 1750ms 25ms 34.8MB 1723ms 10ms wasmtime 27.0.0
wasm 4.rs 1794ms 30ms 34.9MB 1777ms 3ms wasmtime 27.0.0
wasm 3.rs 1860ms 47ms 52.9MB 1830ms 17ms wasmtime 27.0.0
d 1.d 2677ms 15ms 314.4MB 2853ms 47ms dmd 2.109.1

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 5.rs 152ms 0.8ms 41.0MB 140ms 0ms wasmer/llvm 5.0.2
d 1.d 157ms 1.1ms 208.7MB 130ms 13ms ldc2 1.39.0
wasm 4.rs 161ms 3.1ms 41.0MB 143ms 3ms wasmer/llvm 5.0.2
wasm 3.rs 165ms 6.6ms 42.9MB 143ms 7ms wasmer/llvm 5.0.2
wasm 4.rs 171ms 1.2ms 21.0MB 157ms 3ms wasmtime 27.0.0
wasm 3.rs 174ms 3.1ms 22.9MB 157ms 3ms wasmtime 27.0.0
wasm 5.rs 181ms 18ms 22.9MB 163ms 0ms wasmtime 27.0.0
d 1.d 235ms 9.2ms 209.9MB 203ms 13ms dmd 2.109.1

coro-prime-sieve

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 3.rs 1094ms 34ms 38.6MB 1077ms 3ms wasmer/llvm 5.0.2
wasm 3.rs 1163ms 43ms 21.3MB 1150ms 0ms wasmtime 27.0.0
d 1.d timeout 0.0ms 16.1MB 4970ms 20ms dmd 2.109.1
d 1.d timeout 0.0ms 15.5MB 4960ms 27ms ldc2 1.39.0

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 3.rs 80ms 1.4ms 21.8MB 63ms 0ms wasmtime 27.0.0
wasm 3.rs 81ms 2.4ms 39.2MB 63ms 3ms wasmer/llvm 5.0.2
d 1.d 1034ms 18ms 8.4MB 1010ms 10ms ldc2 1.39.0
d 1.d 1318ms 12ms 10.6MB 1300ms 7ms dmd 2.109.1

edigits

Input: 250001

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 1.rs 357ms 2.7ms 38.5MB 343ms 0ms wasmer/llvm 5.0.2
wasm 1.rs 418ms 3.7ms 20.2MB 403ms 3ms wasmtime 27.0.0
d 1.d 2550ms 21ms 8.0MB 2537ms 0ms ldc2 1.39.0
d 1.d 2923ms 8.2ms 10.5MB 2910ms 10ms dmd 2.109.1

Input: 100000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 1.rs 101ms 0.3ms 38.5MB 87ms 3ms wasmer/llvm 5.0.2
wasm 1.rs 113ms 1.8ms 21.7MB 100ms 0ms wasmtime 27.0.0
d 1.d 439ms 0.9ms 8.1MB 423ms 0ms ldc2 1.39.0
d 1.d 534ms 2.0ms 10.2MB 523ms 0ms dmd 2.109.1

fannkuch-redux

Input: 11

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1-im.d 399ms 45ms 5.1MB 1410ms 0ms ldc2 1.39.0
d 2-im.d 1114ms 10ms 5.1MB 4297ms 0ms ldc2 1.39.0
d 1-i.d 1488ms 14ms 2.9MB 1480ms 0ms ldc2 1.39.0
d 1.d 3139ms 35ms 2.9MB 3130ms 0ms ldc2 1.39.0
d 2-i.d 3221ms 2.5ms 2.9MB 3210ms 0ms ldc2 1.39.0
wasm 1.rs 3274ms 9.3ms 39.0MB 3263ms 0ms wasmer/llvm 5.0.2
d 1.d 3537ms 17ms 4.6MB 3523ms 0ms dmd 2.109.1
wasm 1.rs 4081ms 22ms 18.6MB 4063ms 0ms wasmtime 27.0.0
d 1-im.d 4241ms 40ms 8.9MB 16490ms 7ms dmd 2.109.1
d 1-i.d timeout 0.0ms 4.5MB 4987ms 0ms dmd 2.109.1
d 2-i.d timeout 0.0ms 4.6MB 4990ms 0ms dmd 2.109.1
d 2-im.d timeout 0.0ms 6.8MB 19780ms 7ms dmd 2.109.1

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1-im.d 40ms 1.9ms 5.1MB 110ms 0ms ldc2 1.39.0
d 2-im.d 110ms 20ms 6.9MB 337ms 3ms ldc2 1.39.0
d 1-i.d 124ms 0.4ms 2.8MB 110ms 0ms ldc2 1.39.0
d 1.d 263ms 2.2ms 2.8MB 253ms 0ms ldc2 1.39.0
d 2-i.d 266ms 0.8ms 2.8MB 260ms 0ms ldc2 1.39.0
wasm 1.rs 285ms 1.7ms 36.9MB 270ms 0ms wasmer/llvm 5.0.2
d 1.d 296ms 2.0ms 4.5MB 287ms 0ms dmd 2.109.1
wasm 1.rs 341ms 0.3ms 18.5MB 327ms 0ms wasmtime 27.0.0
d 1-im.d 359ms 0.1ms 8.9MB 1343ms 0ms dmd 2.109.1
d 2-im.d 545ms 24ms 6.8MB 1990ms 0ms dmd 2.109.1
d 1-i.d 860ms 8.9ms 4.5MB 850ms 0ms dmd 2.109.1
d 2-i.d 1389ms 18ms 4.5MB 1377ms 0ms dmd 2.109.1

fasta

Input: 2500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 196ms 1.3ms 33.2MB 177ms 7ms ldc2 1.39.0
wasm 1.rs 230ms 2.2ms 19.0MB 213ms 0ms wasmtime 27.0.0
wasm 1.rs 331ms 4.4ms 37.5MB 233ms 70ms wasmer/llvm 5.0.2
d 1.d 620ms 0.6ms 51.0MB 610ms 0ms dmd 2.109.1

Input: 250000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 24ms 0.1ms 8.1MB 20ms 0ms ldc2 1.39.0
wasm 1.rs 34ms 5.0ms 19.0MB 20ms 3ms wasmtime 27.0.0
wasm 1.rs 45ms 0.8ms 37.5MB 23ms 3ms wasmer/llvm 5.0.2
d 1.d 67ms 1.4ms 10.1MB 53ms 7ms dmd 2.109.1

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 1.4ms 0.8ms 3.0MB 0ms 0ms ldc2 1.39.0
d 1.d 2.2ms 0.4ms 5.0MB 0ms 0ms dmd 2.109.1
wasm 1.rs 7.4ms 0.3ms 21.1MB 0ms 0ms wasmtime 27.0.0
wasm 1.rs 12ms 0.4ms 38.6MB 0ms 0ms wasmer/llvm 5.0.2

lru

Input: 1000 1000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 1.rs 79ms 1.1ms 20.7MB 60ms 0ms wasmtime 27.0.0
wasm 1.rs 80ms 0.5ms 37.2MB 63ms 0ms wasmer/llvm 5.0.2
d 1.d 125ms 0.6ms 5.8MB 117ms 3ms ldc2 1.39.0
d 1.d 181ms 0.7ms 7.8MB 170ms 3ms dmd 2.109.1

Input: 1000 3000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 1.rs 220ms 0.7ms 37.4MB 207ms 3ms wasmer/llvm 5.0.2
wasm 1.rs 224ms 4.2ms 19.1MB 210ms 0ms wasmtime 27.0.0
d 1.d 359ms 0.1ms 5.8MB 350ms 10ms ldc2 1.39.0
d 1.d 531ms 3.4ms 8.1MB 510ms 20ms dmd 2.109.1

Input: 100 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 1.rs 46ms 0.7ms 19.2MB 37ms 0ms wasmtime 27.0.0
wasm 1.rs 49ms 1.3ms 38.5MB 37ms 0ms wasmer/llvm 5.0.2
d 1.d 55ms 0.6ms 5.9MB 50ms 0ms ldc2 1.39.0
d 1.d 81ms 0.9ms 7.9MB 73ms 0ms dmd 2.109.1

mandelbrot

Input: 5000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 407ms 2.1ms 6.7MB 390ms 0ms ldc2 1.39.0
wasm 8.rs 698ms 1.7ms 40.4MB 677ms 7ms wasmer/llvm 5.0.2
wasm 8.rs 821ms 15ms 24.0MB 810ms 0ms wasmtime 27.0.0
d 1.d 2343ms 397ms 9.3MB 2330ms 0ms dmd 2.109.1

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 20ms 0.3ms 3.0MB 10ms 0ms ldc2 1.39.0
wasm 8.rs 42ms 0.2ms 37.5MB 27ms 3ms wasmer/llvm 5.0.2
wasm 8.rs 43ms 0.8ms 19.1MB 33ms 0ms wasmtime 27.0.0
d 1.d 91ms 1.2ms 4.5MB 80ms 0ms dmd 2.109.1

merkletrees

Input: 17

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 1.rs 774ms 5.0ms 61.2MB 737ms 23ms wasmer/llvm 5.0.2
wasm 1.rs 868ms 25ms 42.9MB 840ms 13ms wasmtime 27.0.0
d 1.d 945ms 3.3ms 312.5MB 900ms 43ms ldc2 1.39.0
d 1.d 1727ms 10ms 314.5MB 1840ms 57ms dmd 2.109.1

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 1.rs 175ms 0.7ms 45.1MB 153ms 10ms wasmer/llvm 5.0.2
wasm 1.rs 192ms 10ms 24.9MB 180ms 3ms wasmtime 27.0.0
d 1.d 195ms 0.7ms 312.7MB 153ms 30ms ldc2 1.39.0
d 1.d 338ms 0.9ms 314.8MB 293ms 33ms dmd 2.109.1

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 1.rs 343ms 1.8ms 37.1MB 323ms 3ms wasmer/llvm 5.0.2
d 2.d 360ms 1.4ms 2.8MB 347ms 0ms ldc2 1.39.0
d 1.d 360ms 1.1ms 2.9MB 350ms 0ms ldc2 1.39.0
wasm 1.rs 406ms 1.4ms 20.8MB 390ms 0ms wasmtime 27.0.0
wasm 2.rs 552ms 37ms 39.3MB 540ms 0ms wasmer/llvm 5.0.2
wasm 2.rs 576ms 0.6ms 20.8MB 560ms 0ms wasmtime 27.0.0
d 1.d 679ms 3.1ms 4.6MB 667ms 0ms dmd 2.109.1
d 2.d 2034ms 49ms 4.6MB 2023ms 0ms dmd 2.109.1

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 39ms 0.2ms 2.9MB 30ms 0ms ldc2 1.39.0
d 2.d 39ms 0.1ms 2.8MB 30ms 0ms ldc2 1.39.0
wasm 1.rs 47ms 0.8ms 38.4MB 30ms 3ms wasmer/llvm 5.0.2
wasm 1.rs 49ms 0.5ms 20.8MB 33ms 3ms wasmtime 27.0.0
wasm 2.rs 66ms 0.8ms 20.8MB 50ms 3ms wasmtime 27.0.0
wasm 2.rs 67ms 3.4ms 37.4MB 50ms 7ms wasmer/llvm 5.0.2
d 1.d 71ms 0.3ms 4.6MB 60ms 0ms dmd 2.109.1
d 2.d 208ms 1.2ms 4.6MB 200ms 0ms dmd 2.109.1

nsieve

Input: 12

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 315ms 3.8ms 77.2MB 293ms 0ms dmd 2.109.1
d 1.d 320ms 5.7ms 43.7MB 293ms 10ms ldc2 1.39.0
wasm 2.rs 351ms 5.0ms 42.1MB 333ms 3ms wasmer/llvm 5.0.2
wasm 1.rs 364ms 8.8ms 76.2MB 350ms 3ms wasmer/llvm 5.0.2
wasm 2.rs 381ms 11ms 23.8MB 370ms 0ms wasmtime 27.0.0
wasm 1.rs 510ms 6.0ms 58.2MB 490ms 7ms wasmtime 27.0.0
d 2.d 817ms 3.4ms 47.7MB 800ms 3ms ldc2 1.39.0
d 2.d 1161ms 3.7ms 49.3MB 1140ms 3ms dmd 2.109.1

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 65ms 1.0ms 13.7MB 53ms 0ms ldc2 1.39.0
d 1.d 67ms 1.7ms 24.0MB 57ms 0ms dmd 2.109.1
wasm 1.rs 70ms 1.4ms 47.0MB 57ms 0ms wasmer/llvm 5.0.2
wasm 2.rs 95ms 1.1ms 38.6MB 80ms 0ms wasmer/llvm 5.0.2
wasm 2.rs 96ms 1.1ms 20.1MB 80ms 7ms wasmtime 27.0.0
wasm 1.rs 97ms 1.5ms 28.7MB 90ms 0ms wasmtime 27.0.0
d 2.d 206ms 0.2ms 15.7MB 193ms 0ms ldc2 1.39.0
d 2.d 291ms 1.2ms 17.6MB 277ms 3ms dmd 2.109.1

pidigits

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 2.rs 2075ms 6.3ms 37.6MB 2053ms 3ms wasmer/llvm 5.0.2
wasm 2.rs 2160ms 7.6ms 19.7MB 2147ms 0ms wasmtime 27.0.0
d 1.d 2406ms 16ms 7.9MB 2367ms 377ms ldc2 1.39.0
d 1.d 4355ms 15ms 10.1MB 4377ms 377ms dmd 2.109.1

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 2.rs 493ms 3.2ms 39.4MB 480ms 0ms wasmer/llvm 5.0.2
wasm 2.rs 514ms 2.4ms 19.2MB 497ms 0ms wasmtime 27.0.0
d 1.d 585ms 12ms 8.1MB 567ms 120ms ldc2 1.39.0
d 1.d 1036ms 3.9ms 10.2MB 1010ms 113ms dmd 2.109.1

secp256k1

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 1.rs 3108ms 21ms 37.1MB 3093ms 3ms wasmer/llvm 5.0.2
wasm 1.rs 3496ms 1.3ms 20.6MB 3480ms 0ms wasmtime 27.0.0
d 1.d 4776ms 13ms 4.0MB 4740ms 333ms ldc2 1.39.0
d 1.d timeout 0.0ms 6.4MB 4997ms 250ms dmd 2.109.1

Input: 500

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 1.rs 787ms 3.0ms 39.0MB 773ms 3ms wasmer/llvm 5.0.2
wasm 1.rs 887ms 3.6ms 20.7MB 877ms 0ms wasmtime 27.0.0
d 1.d 1207ms 11ms 3.9MB 1193ms 83ms ldc2 1.39.0
d 1.d 2052ms 57ms 6.6MB 2020ms 140ms dmd 2.109.1

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 3581ms 0.9ms 4.0MB 3570ms 0ms ldc2 1.39.0
wasm 2.rs 3587ms 3.9ms 37.2MB 3573ms 3ms wasmer/llvm 5.0.2
wasm 2.rs 3589ms 8.6ms 18.9MB 3573ms 0ms wasmtime 27.0.0
wasm 7.rs 3597ms 1.9ms 38.9MB 3580ms 3ms wasmer/llvm 5.0.2
d 1.d 3647ms 53ms 5.9MB 3633ms 0ms dmd 2.109.1
wasm 7.rs 4874ms 3.3ms 20.7MB 4857ms 0ms wasmtime 27.0.0

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 897ms 1.4ms 3.6MB 887ms 0ms ldc2 1.39.0
wasm 2.rs 906ms 2.5ms 18.7MB 890ms 0ms wasmtime 27.0.0
wasm 2.rs 909ms 1.3ms 38.9MB 893ms 0ms wasmer/llvm 5.0.2
wasm 7.rs 909ms 0.8ms 39.0MB 893ms 0ms wasmer/llvm 5.0.2
d 1.d 909ms 3.9ms 5.3MB 897ms 0ms dmd 2.109.1
wasm 7.rs 1233ms 11ms 18.7MB 1220ms 0ms wasmtime 27.0.0

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 227ms 0.3ms 3.3MB 220ms 0ms ldc2 1.39.0
d 1.d 230ms 0.5ms 4.8MB 220ms 0ms dmd 2.109.1
wasm 2.rs 234ms 2.2ms 18.5MB 220ms 0ms wasmtime 27.0.0
wasm 2.rs 238ms 1.1ms 38.9MB 227ms 0ms wasmer/llvm 5.0.2
wasm 7.rs 239ms 1.1ms 37.2MB 223ms 0ms wasmer/llvm 5.0.2
wasm 7.rs 321ms 11ms 18.8MB 303ms 0ms wasmtime 27.0.0