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

binarytrees

Input: 18

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
dart 1.dart 1175ms 1.0ms 86.0MB 1150ms 40ms dart/exe 2.17.0
wasm 3.rs 2001ms 12ms 40.9MB 1977ms 10ms wasmedgec 0.9.1
wasm 3.rs 2003ms 12ms 38.0MB 1960ms 27ms wasmer/llvm 2.2.1
wasm 5.rs 2010ms 5.6ms 24.9MB 1987ms 3ms wasmedgec 0.9.1
wasm 4.rs 2213ms 9.5ms 24.9MB 2197ms 0ms wasmedgec 0.9.1
wasm 5.rs 2617ms 4.8ms 22.3MB 2593ms 3ms wasmer/llvm 2.2.1
wasm 3.rs 2632ms 10ms 42.2MB 2607ms 10ms wasmtime 0.36.0
wasm 4.rs 2698ms 39ms 22.2MB 2670ms 13ms wasmer/llvm 2.2.1
wasm 5.rs 2882ms 50ms 58.7MB 2883ms 13ms node 16.15.0
wasm 3.rs 2936ms 43ms 74.8MB 2913ms 20ms node 16.15.0
wasm 4.rs 2969ms 12ms 58.8MB 2963ms 13ms node 16.15.0
wasm 4.rs 3209ms 19ms 26.3MB 3183ms 7ms wasmtime 0.36.0
wasm 5.rs 3225ms 37ms 26.3MB 3207ms 3ms wasmtime 0.36.0

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
dart 1.dart 120ms 2.8ms 49.2MB 100ms 13ms dart/exe 2.17.0
wasm 5.rs 196ms 0.7ms 10.9MB 183ms 0ms wasmedgec 0.9.1
wasm 3.rs 196ms 14ms 10.1MB 170ms 0ms wasmer/llvm 2.2.1
wasm 3.rs 198ms 4.8ms 12.9MB 183ms 0ms wasmedgec 0.9.1
wasm 4.rs 216ms 3.1ms 10.9MB 203ms 0ms wasmedgec 0.9.1
wasm 5.rs 253ms 10ms 8.1MB 237ms 0ms wasmer/llvm 2.2.1
wasm 4.rs 259ms 8.1ms 8.2MB 240ms 0ms wasmer/llvm 2.2.1
wasm 3.rs 261ms 16ms 14.3MB 233ms 0ms wasmtime 0.36.0
wasm 5.rs 310ms 7.3ms 12.4MB 293ms 0ms wasmtime 0.36.0
wasm 4.rs 316ms 9.1ms 12.4MB 303ms 0ms wasmtime 0.36.0
wasm 4.rs 347ms 6.1ms 44.5MB 350ms 10ms node 16.15.0
wasm 5.rs 356ms 15ms 44.3MB 367ms 3ms node 16.15.0
wasm 3.rs 356ms 18ms 49.2MB 350ms 13ms node 16.15.0

coro-prime-sieve

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 3.rs 1337ms 61ms 8.5MB 1327ms 0ms wasmer/llvm 2.2.1
wasm 3.rs 1508ms 36ms 47.7MB 1560ms 3ms node 16.15.0
wasm 3.rs 1825ms 10ms 12.3MB 1810ms 0ms wasmtime 0.36.0
dart 1.dart timeout 0.0ms 0.0MB 0ms 0ms dart/exe 2.17.0

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 3.rs 91ms 10ms 6.8MB 73ms 0ms wasmer/llvm 2.2.1
wasm 3.rs 124ms 1.7ms 11.0MB 113ms 0ms wasmtime 0.36.0
wasm 3.rs 215ms 3.8ms 48.3MB 257ms 7ms node 16.15.0
dart 1.dart 1215ms 11ms 227.3MB 1130ms 145ms dart/exe 2.17.0

edigits

Input: 250001

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 1.rs 477ms 0.5ms 7.9MB 463ms 0ms wasmer/llvm 2.2.1
wasm 1.rs 498ms 1.6ms 11.3MB 483ms 0ms wasmedgec 0.9.1
wasm 1.rs 604ms 0.5ms 13.6MB 590ms 0ms wasmtime 0.36.0
wasm 1.rs 706ms 1.0ms 51.5MB 753ms 3ms node 16.15.0
dart 1.dart timeout 0.0ms 0.0MB 0ms 0ms dart/exe 2.17.0

Input: 100000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 1.rs 131ms 9.4ms 6.9MB 117ms 0ms wasmer/llvm 2.2.1
wasm 1.rs 140ms 1.9ms 10.7MB 130ms 0ms wasmedgec 0.9.1
wasm 1.rs 161ms 1.4ms 11.1MB 150ms 0ms wasmtime 0.36.0
wasm 1.rs 270ms 1.2ms 47.5MB 313ms 7ms node 16.15.0
dart 1.dart 839ms 3.1ms 45.1MB 803ms 20ms dart/exe 2.17.0

fannkuch-redux

Input: 11

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
dart 2.dart 4178ms 63ms 11.7MB 4163ms 0ms dart/exe 2.17.0
wasm 1.rs 4702ms 36ms 43.5MB 4700ms 7ms node 16.15.0
wasm 1.rs timeout 0.0ms 0.0MB 0ms 0ms wasmedgec 0.9.1
wasm 1.rs timeout 0.0ms 0.0MB 0ms 0ms wasmer/llvm 2.2.1
wasm 1.rs timeout 0.0ms 0.0MB 0ms 0ms wasmtime 0.36.0

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
dart 2.dart 334ms 1.0ms 13.7MB 320ms 0ms dart/exe 2.17.0
wasm 1.rs 420ms 12ms 5.9MB 400ms 0ms wasmer/llvm 2.2.1
wasm 1.rs 464ms 2.1ms 9.0MB 450ms 0ms wasmtime 0.36.0
wasm 1.rs 466ms 3.6ms 43.5MB 473ms 7ms node 16.15.0
wasm 1.rs 467ms 0.5ms 8.8MB 457ms 0ms wasmedgec 0.9.1

fasta

Input: 2500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 1.rs 348ms 0.4ms 6.4MB 333ms 0ms wasmer/llvm 2.2.1
wasm 1.rs 357ms 1.4ms 10.9MB 347ms 0ms wasmtime 0.36.0
wasm 1.rs 366ms 0.6ms 8.8MB 353ms 0ms wasmedgec 0.9.1
wasm 1.rs 462ms 4.7ms 43.1MB 480ms 3ms node 16.15.0
dart 1.dart 560ms 1.4ms 21.9MB 540ms 3ms dart/exe 2.17.0

Input: 250000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 1.rs 43ms 0.7ms 11.0MB 30ms 0ms wasmtime 0.36.0
wasm 1.rs 46ms 15ms 6.4MB 27ms 0ms wasmer/llvm 2.2.1
wasm 1.rs 49ms 3.4ms 9.1MB 33ms 0ms wasmedgec 0.9.1
dart 1.dart 64ms 1.0ms 16.4MB 50ms 3ms dart/exe 2.17.0
wasm 1.rs 125ms 3.2ms 43.3MB 143ms 3ms node 16.15.0

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
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
dart 1.dart 6.6ms 0.4ms 11.9MB 0ms 0ms dart/exe 2.17.0
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

http-server

Input: 3000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
dart 1.dart 3910ms 26ms 98.0MB 1207ms 717ms dart/exe 2.17.0

Input: 500

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
dart 1.dart 1438ms 218ms 53.9MB 167ms 130ms dart/exe 2.17.0

json-serde

Input: sample 5000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
dart 1.dart 273ms 0.9ms 58.6MB 257ms 7ms dart/exe 2.17.0

Input: canada 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
dart 1.dart 2207ms 5.7ms 278.4MB 2277ms 127ms dart/exe 2.17.0

knucleotide

Input: 2500000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
dart 3-m.dart 2456ms 27ms 229.2MB 4223ms 100ms dart/exe 2.17.0

Input: 250000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
dart 3-m.dart 413ms 11ms 193.5MB 647ms 57ms dart/exe 2.17.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
wasm 1.rs 218ms 2.1ms 43.5MB 230ms 7ms node 16.15.0
dart 2.dart 246ms 0.1ms 35.6MB 227ms 7ms dart/exe 2.17.0
dart 1.dart 1459ms 1.3ms 44.4MB 1437ms 7ms dart/exe 2.17.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
dart 2.dart 705ms 2.3ms 42.9MB 687ms 10ms dart/exe 2.17.0
dart 1.dart 4331ms 1.5ms 44.5MB 4307ms 10ms dart/exe 2.17.0

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
dart 2.dart 116ms 3.4ms 23.1MB 100ms 0ms dart/exe 2.17.0
wasm 1.rs 151ms 1.5ms 43.4MB 170ms 0ms node 16.15.0
dart 1.dart 222ms 0.9ms 44.7MB 200ms 7ms dart/exe 2.17.0

merkletrees

Input: 17

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
dart 1.dart 653ms 6.2ms 71.7MB 630ms 33ms dart/exe 2.17.0
wasm 1.rs 1149ms 49ms 33.0MB 1127ms 7ms wasmedgec 0.9.1
wasm 1.rs 1284ms 26ms 30.0MB 1250ms 17ms wasmer/llvm 2.2.1
wasm 1.rs 1469ms 18ms 66.7MB 1470ms 13ms node 16.15.0
wasm 1.rs 1524ms 3.3ms 34.3MB 1503ms 3ms wasmtime 0.36.0

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
dart 1.dart 157ms 1.0ms 51.1MB 133ms 17ms dart/exe 2.17.0
wasm 1.rs 246ms 3.9ms 15.0MB 233ms 0ms wasmedgec 0.9.1
wasm 1.rs 277ms 16ms 12.2MB 250ms 0ms wasmer/llvm 2.2.1
wasm 1.rs 333ms 7.8ms 16.4MB 320ms 0ms wasmtime 0.36.0
wasm 1.rs 370ms 7.6ms 48.5MB 370ms 10ms 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
dart 3.dart 517ms 1.4ms 13.8MB 503ms 0ms dart/exe 2.17.0
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

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
dart 3.dart 60ms 0.8ms 11.9MB 43ms 0ms dart/exe 2.17.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

pidigits

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
dart 2.dart 1799ms 2.5ms 19.6MB 1773ms 40ms dart/exe 2.17.0
wasm 2.rs 3578ms 0.2ms 6.9MB 3567ms 0ms wasmer/llvm 2.2.1
wasm 2.rs 3678ms 24ms 10.9MB 3667ms 0ms wasmedgec 0.9.1
wasm 2.rs 4112ms 42ms 47.5MB 4150ms 17ms node 16.15.0
wasm 2.rs 4174ms 1.4ms 10.9MB 4160ms 0ms wasmtime 0.36.0

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
dart 2.dart 429ms 1.1ms 20.0MB 410ms 13ms dart/exe 2.17.0
wasm 2.rs 848ms 13ms 6.6MB 830ms 0ms wasmer/llvm 2.2.1
wasm 2.rs 878ms 4.6ms 10.6MB 863ms 0ms wasmedgec 0.9.1
wasm 2.rs 988ms 1.7ms 10.6MB 977ms 0ms wasmtime 0.36.0
wasm 2.rs 1052ms 10ms 47.4MB 1097ms 10ms node 16.15.0

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
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
dart 1.dart timeout 0.0ms 0.0MB 0ms 0ms dart/exe 2.17.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
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
dart 1.dart 1296ms 1.1ms 12.0MB 1280ms 0ms dart/exe 2.17.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
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
dart 1.dart 331ms 2.2ms 13.3MB 320ms 0ms dart/exe 2.17.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