V VS Wasm benchmarks

Current benchmark data was generated on Wed May 25 2022, full log can be found HERE

CONTRIBUTIONS are WELCOME!

[x86_64][2 cores] Intel(R) Xeon(R) Platinum 8272CL CPU @ 2.60GHz (Model 85)

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

coro-prime-sieve

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 3.rs 1151ms 3.4ms 8.2MB 1143ms 0ms wasmer/llvm 2.2.1
wasm 3.rs 1391ms 99ms 47.1MB 1430ms 7ms node 16.15.0
wasm 3.rs 1617ms 11ms 12.0MB 1607ms 0ms wasmtime 0.37.0
v 1.v timeout 0.0ms 0.0MB 0ms 0ms v/clang 0.2.4
v 1.v timeout 0.0ms 0.0MB 0ms 0ms v/clang+gc 0.2.4

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 3.rs 81ms 13ms 6.9MB 67ms 0ms wasmer/llvm 2.2.1
wasm 3.rs 103ms 7.1ms 10.7MB 90ms 0ms wasmtime 0.37.0
wasm 3.rs 213ms 2.3ms 47.4MB 253ms 13ms node 16.15.0
v 1-m.v 1889ms 85ms 17.8MB 1903ms 1643ms v/clang 0.2.4
v 1-m.v 2361ms 540ms 20.5MB 2327ms 2083ms v/clang+gc 0.2.4

edigits

Input: 250001

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 1.rs 433ms 0.4ms 7.8MB 420ms 0ms wasmer/llvm 2.2.1
wasm 1.rs 437ms 1.5ms 11.3MB 420ms 0ms wasmedgec 0.9.1
wasm 1.rs 582ms 0.9ms 11.4MB 567ms 0ms wasmtime 0.37.0
wasm 1.rs 636ms 38ms 46.9MB 677ms 7ms node 16.15.0
v 1.v timeout 0.0ms 0.0MB 0ms 0ms v/clang+gc 0.2.4

Input: 100000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 1.rs 115ms 20ms 7.1MB 93ms 0ms wasmer/llvm 2.2.1
wasm 1.rs 130ms 9.2ms 10.7MB 117ms 0ms wasmedgec 0.9.1
wasm 1.rs 156ms 1.4ms 10.7MB 143ms 0ms wasmtime 0.37.0
wasm 1.rs 258ms 2.6ms 47.2MB 297ms 10ms node 16.15.0
v 1.v timeout 0.0ms 0.0MB 0ms 0ms v/clang+gc 0.2.4

fannkuch-redux

Input: 11

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
v 1.v 3061ms 9.9ms 0.6MB 3050ms 0ms v/clang 0.2.4
v 1.v 3068ms 5.6ms 2.0MB 3057ms 0ms v/clang+gc 0.2.4
wasm 1.rs 4919ms 0.8ms 8.8MB 4903ms 0ms wasmedgec 0.9.1
wasm 1.rs timeout 0.0ms 0.0MB 0ms 0ms node 16.15.0
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.37.0

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
v 1.v 250ms 0.9ms 0.6MB 240ms 0ms v/clang 0.2.4
v 1.v 255ms 2.1ms 2.0MB 240ms 0ms v/clang+gc 0.2.4
wasm 1.rs 419ms 1.0ms 8.9MB 407ms 0ms wasmedgec 0.9.1
wasm 1.rs 436ms 10ms 5.8MB 417ms 0ms wasmer/llvm 2.2.1
wasm 1.rs 473ms 2.1ms 8.9MB 460ms 0ms wasmtime 0.37.0
wasm 1.rs 514ms 84ms 41.9MB 520ms 3ms node 16.15.0

fasta

Input: 2500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 1.rs 272ms 0.6ms 10.1MB 253ms 0ms wasmtime 0.37.0
wasm 1.rs 285ms 0.2ms 8.8MB 270ms 0ms wasmedgec 0.9.1
wasm 1.rs 297ms 2.4ms 6.5MB 287ms 0ms wasmer/llvm 2.2.1
wasm 1.rs 408ms 2.6ms 41.9MB 420ms 10ms node 16.15.0
v 1.v 698ms 2.2ms 2.2MB 603ms 77ms v/clang+gc 0.2.4
v 1.v 816ms 5.9ms 0.6MB 720ms 77ms v/clang 0.2.4

Input: 250000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 1.rs 34ms 0.9ms 9.1MB 20ms 0ms wasmtime 0.37.0
wasm 1.rs 40ms 0.7ms 8.7MB 30ms 0ms wasmedgec 0.9.1
wasm 1.rs 41ms 12ms 6.3MB 27ms 0ms wasmer/llvm 2.2.1
v 1.v 75ms 1.2ms 2.2MB 57ms 3ms v/clang+gc 0.2.4
v 1.v 84ms 0.9ms 0.6MB 63ms 3ms v/clang 0.2.4
wasm 1.rs 118ms 1.8ms 41.8MB 127ms 10ms node 16.15.0

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
v 1.v 2.1ms 0.4ms 2.0MB 0ms 0ms v/clang+gc 0.2.4
v 1.v 2.5ms 2.4ms 0.6MB 0ms 0ms v/clang 0.2.4
wasm 1.rs 5.8ms 1.2ms 9.0MB 0ms 0ms wasmtime 0.37.0
wasm 1.rs 7.6ms 9.4ms 5.9MB 0ms 0ms wasmer/llvm 2.2.1
wasm 1.rs 10ms 0.6ms 8.5MB 0ms 0ms wasmedgec 0.9.1
wasm 1.rs 76ms 1.6ms 41.6MB 82ms 12ms node 16.15.0

lru

Input: 1000 1000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 1.rs 123ms 2.1ms 6.3MB 107ms 0ms wasmer/llvm 2.2.1
wasm 1.rs 129ms 9.2ms 10.9MB 117ms 0ms wasmtime 0.37.0
wasm 1.rs 141ms 0.5ms 9.2MB 130ms 0ms wasmedgec 0.9.1
wasm 1.rs 222ms 4.3ms 45.8MB 237ms 7ms node 16.15.0
v 1.v 339ms 0.2ms 0.6MB 330ms 0ms v/clang 0.2.4
v 1.v 362ms 2.8ms 2.3MB 350ms 0ms v/clang+gc 0.2.4

Input: 1000 3000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 1.rs 356ms 1.5ms 6.2MB 340ms 0ms wasmer/llvm 2.2.1
wasm 1.rs 386ms 27ms 10.2MB 373ms 0ms wasmtime 0.37.0
wasm 1.rs 394ms 4.9ms 11.2MB 380ms 0ms wasmedgec 0.9.1
wasm 1.rs 489ms 7.3ms 42.4MB 500ms 10ms node 16.15.0
v 1.v 1013ms 1.0ms 0.6MB 1000ms 0ms v/clang 0.2.4
v 1.v 1076ms 4.4ms 2.2MB 1067ms 0ms v/clang+gc 0.2.4

Input: 100 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 1.rs 68ms 5.3ms 9.1MB 57ms 0ms wasmtime 0.37.0
wasm 1.rs 69ms 13ms 5.7MB 53ms 0ms wasmer/llvm 2.2.1
wasm 1.rs 77ms 2.6ms 9.2MB 70ms 0ms wasmedgec 0.9.1
v 1.v 120ms 0.6ms 0.6MB 110ms 0ms v/clang 0.2.4
v 1.v 127ms 1.0ms 2.3MB 120ms 0ms v/clang+gc 0.2.4
wasm 1.rs 152ms 3.7ms 42.6MB 167ms 3ms node 16.15.0

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 1.rs 545ms 0.1ms 4.9MB 533ms 0ms wasmer/llvm 2.2.1
wasm 1.rs 558ms 19ms 9.3MB 547ms 0ms wasmtime 0.37.0
wasm 1.rs 609ms 0.4ms 9.2MB 597ms 0ms wasmedgec 0.9.1
wasm 1.rs 644ms 12ms 46.4MB 657ms 10ms node 16.15.0
wasm 2.rs 729ms 68ms 9.6MB 713ms 0ms wasmedgec 0.9.1
wasm 2.rs 780ms 43ms 5.1MB 773ms 0ms wasmer/llvm 2.2.1
wasm 2.rs 824ms 30ms 11.0MB 810ms 0ms wasmtime 0.37.0
wasm 2.rs 891ms 2.3ms 46.4MB 907ms 7ms node 16.15.0
v 1.v 988ms 1.3ms 0.8MB 980ms 0ms v/clang 0.2.4
v 1.v 1002ms 0.0ms 2.3MB 990ms 0ms v/clang+gc 0.2.4

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 1.rs 61ms 11ms 5.9MB 50ms 0ms wasmer/llvm 2.2.1
wasm 1.rs 65ms 1.4ms 9.2MB 53ms 0ms wasmtime 0.37.0
wasm 1.rs 74ms 1.8ms 9.2MB 60ms 0ms wasmedgec 0.9.1
wasm 2.rs 90ms 16ms 5.8MB 67ms 0ms wasmer/llvm 2.2.1
wasm 2.rs 92ms 1.5ms 9.6MB 77ms 0ms wasmedgec 0.9.1
wasm 2.rs 93ms 1.5ms 10.9MB 80ms 0ms wasmtime 0.37.0
v 1.v 98ms 7.3ms 0.8MB 87ms 0ms v/clang 0.2.4
v 1.v 105ms 0.8ms 2.4MB 90ms 0ms v/clang+gc 0.2.4
wasm 1.rs 157ms 4.8ms 46.4MB 170ms 10ms node 16.15.0
wasm 2.rs 180ms 4.3ms 46.4MB 200ms 7ms node 16.15.0

nsieve

Input: 12

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
v 2.v 499ms 6.1ms 10.4MB 480ms 0ms v/clang+gc 0.2.4
wasm 2.rs 560ms 34ms 13.8MB 543ms 0ms wasmedgec 0.9.1
wasm 2.rs 560ms 32ms 10.8MB 543ms 0ms wasmer/llvm 2.2.1
wasm 2.rs 784ms 1.6ms 46.7MB 787ms 3ms node 16.15.0
wasm 2.rs 829ms 51ms 15.1MB 813ms 0ms wasmtime 0.37.0
v 1.v 1054ms 16ms 41.3MB 1033ms 10ms v/clang+gc 0.2.4
v 1.v 1142ms 36ms 40.1MB 1113ms 13ms v/clang 0.2.4
wasm 1.rs 1262ms 50ms 47.9MB 1233ms 10ms wasmedgec 0.9.1
wasm 1.rs 1402ms 9.7ms 45.2MB 1360ms 30ms wasmer/llvm 2.2.1
wasm 1.rs 1434ms 41ms 81.3MB 1437ms 13ms node 16.15.0
wasm 1.rs 1558ms 11ms 49.3MB 1533ms 10ms wasmtime 0.37.0

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
v 2.v 113ms 0.8ms 3.3MB 103ms 0ms v/clang+gc 0.2.4
v 1.v 118ms 1.0ms 10.9MB 107ms 0ms v/clang 0.2.4
v 1.v 125ms 1.0ms 19.8MB 103ms 3ms v/clang+gc 0.2.4
wasm 2.rs 130ms 7.9ms 10.0MB 117ms 0ms wasmedgec 0.9.1
wasm 2.rs 149ms 11ms 7.4MB 127ms 3ms wasmer/llvm 2.2.1
wasm 1.rs 155ms 1.6ms 18.7MB 140ms 0ms wasmedgec 0.9.1
wasm 1.rs 162ms 17ms 15.9MB 133ms 7ms wasmer/llvm 2.2.1
wasm 2.rs 197ms 13ms 11.4MB 183ms 0ms wasmtime 0.37.0
wasm 1.rs 217ms 3.3ms 19.9MB 200ms 3ms wasmtime 0.37.0
wasm 2.rs 244ms 1.7ms 42.4MB 247ms 7ms node 16.15.0
wasm 1.rs 248ms 5.2ms 51.7MB 247ms 17ms node 16.15.0

pidigits

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 2.rs 2831ms 209ms 7.0MB 2820ms 0ms wasmer/llvm 2.2.1
wasm 2.rs 3027ms 2.2ms 10.9MB 3010ms 3ms wasmedgec 0.9.1
wasm 2.rs 3488ms 245ms 10.7MB 3477ms 0ms wasmtime 0.37.0
wasm 2.rs 3816ms 4.7ms 46.2MB 3850ms 13ms node 16.15.0
v 1.v 4270ms 76ms 3.2MB 4247ms 3ms v/clang+gc 0.2.4
v 1.v timeout 0.0ms 0.0MB 0ms 0ms v/clang 0.2.4
v 2.v timeout 0.0ms 0.0MB 0ms 0ms v/clang+gc 0.2.4

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 2.rs 702ms 55ms 6.4MB 683ms 0ms wasmer/llvm 2.2.1
wasm 2.rs 727ms 3.7ms 10.6MB 713ms 0ms wasmedgec 0.9.1
wasm 2.rs 862ms 2.4ms 11.3MB 843ms 0ms wasmtime 0.37.0
wasm 2.rs 990ms 5.2ms 46.3MB 1027ms 13ms node 16.15.0
v 1.v 1076ms 1.6ms 2.5MB 1060ms 0ms v/clang+gc 0.2.4
v 2.v 1546ms 13ms 3.1MB 1530ms 0ms v/clang+gc 0.2.4
v 1.v 2390ms 6.9ms 2460.0MB 1277ms 1093ms v/clang 0.2.4

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
v 1.v 3033ms 0.4ms 2.9MB 3020ms 0ms v/clang+gc 0.2.4
wasm 2.rs 3044ms 0.9ms 11.7MB 3027ms 0ms wasmedgec 0.9.1
v 1.v 3165ms 232ms 1.7MB 3153ms 0ms v/clang 0.2.4
wasm 7.rs 3226ms 4.2ms 6.2MB 3217ms 0ms wasmer/llvm 2.2.1
wasm 2.rs 3406ms 239ms 10.3MB 3393ms 0ms wasmtime 0.37.0
wasm 7.rs 3414ms 251ms 9.7MB 3400ms 0ms wasmedgec 0.9.1
wasm 2.rs 3680ms 8.8ms 6.3MB 3670ms 0ms wasmer/llvm 2.2.1
wasm 7.rs 3832ms 272ms 46.6MB 3850ms 7ms node 16.15.0
wasm 7.rs 4251ms 297ms 10.3MB 4233ms 0ms wasmtime 0.37.0
wasm 2.rs 4272ms 294ms 46.4MB 4290ms 13ms node 16.15.0

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
v 1.v 762ms 0.3ms 2.6MB 750ms 0ms v/clang+gc 0.2.4
wasm 2.rs 772ms 0.5ms 9.6MB 760ms 0ms wasmedgec 0.9.1
v 1.v 794ms 58ms 0.9MB 783ms 0ms v/clang 0.2.4
wasm 7.rs 825ms 3.5ms 9.6MB 810ms 0ms wasmedgec 0.9.1
wasm 7.rs 884ms 61ms 6.2MB 870ms 0ms wasmer/llvm 2.2.1
wasm 2.rs 895ms 0.4ms 10.3MB 880ms 0ms wasmtime 0.37.0
wasm 2.rs 926ms 0.7ms 6.3MB 910ms 0ms wasmer/llvm 2.2.1
wasm 7.rs 1076ms 70ms 46.4MB 1090ms 3ms node 16.15.0
wasm 7.rs 1114ms 0.8ms 10.3MB 1103ms 0ms wasmtime 0.37.0
wasm 2.rs 1187ms 1.0ms 46.3MB 1210ms 3ms node 16.15.0

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
v 1.v 207ms 9.0ms 0.9MB 190ms 0ms v/clang 0.2.4
wasm 2.rs 214ms 16ms 11.5MB 200ms 0ms wasmedgec 0.9.1
v 1.v 219ms 2.0ms 2.6MB 210ms 0ms v/clang+gc 0.2.4
wasm 7.rs 226ms 18ms 11.5MB 210ms 0ms wasmedgec 0.9.1
wasm 2.rs 231ms 1.1ms 9.2MB 217ms 0ms wasmtime 0.37.0
wasm 7.rs 238ms 10ms 5.8MB 220ms 0ms wasmer/llvm 2.2.1
wasm 2.rs 243ms 14ms 5.9MB 223ms 0ms wasmer/llvm 2.2.1
wasm 7.rs 286ms 1.2ms 9.8MB 273ms 0ms wasmtime 0.37.0
wasm 7.rs 323ms 2.1ms 50.3MB 333ms 13ms node 16.15.0
wasm 2.rs 375ms 1.8ms 46.3MB 397ms 7ms node 16.15.0