C VS Wasm benchmarks

Current benchmark data was generated on Mon Oct 03 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.)

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
c 1.c 1.9ms 0.7ms 1.0MB 0ms 0ms gcc 12.2.0
c 1.c 2.4ms 0.7ms 0.6MB 0ms 0ms zigcc 0.10.0-dev.4213+91b05ad47
c 1.c 2.8ms 0.9ms 1.1MB 0ms 0ms clang 11.0.0
wasm 1.rs 2.9ms 0.7ms 4.9MB 0ms 0ms wasmer/llvm 2.3.0
wasm 1.rs 6.6ms 1.2ms 10.8MB 0ms 0ms wasmtime 1.0.1
wasm 1.rs 6.9ms 0.5ms 18.7MB 0ms 0ms wasmedgec 0.11.0
wasm 1.rs 80ms 1.1ms 43.5MB 96ms 4ms node 16.17.0

knucleotide

Input: 2500000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
c 1-m.c 248ms 6.8ms 23.5MB 417ms 0ms gcc 12.2.0
c 1-m.c 556ms 87ms 20.2MB 833ms 20ms clang 11.0.0

Input: 250000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
c 1.c 33ms 2.0ms 12.7MB 43ms 0ms gcc 12.2.0
c 1.c 65ms 7.2ms 9.7MB 90ms 0ms clang 11.0.0

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
c 8-i.c 308ms 0.4ms 0.6MB 300ms 0ms zigcc 0.10.0-dev.4213+91b05ad47
c 5.c 320ms 0.4ms 1.0MB 310ms 0ms gcc 12.2.0
c 5.c 330ms 2.3ms 0.6MB 320ms 0ms zigcc 0.10.0-dev.4213+91b05ad47
c 2.c 337ms 0.0ms 0.6MB 330ms 0ms zigcc 0.10.0-dev.4213+91b05ad47
c 8-i.c 348ms 3.3ms 1.1MB 333ms 0ms clang 11.0.0
c 8-i.c 365ms 0.7ms 0.9MB 357ms 0ms gcc 12.2.0
c 5.c 370ms 1.6ms 1.1MB 360ms 0ms clang 11.0.0
c 2.c 408ms 0.6ms 1.1MB 400ms 0ms clang 11.0.0
wasm 1.rs 468ms 0.9ms 4.9MB 457ms 0ms wasmer/llvm 2.3.0
wasm 1.rs 498ms 0.2ms 9.6MB 487ms 0ms wasmtime 1.0.1
wasm 1.rs 501ms 0.6ms 18.0MB 487ms 0ms wasmedgec 0.11.0
wasm 1.rs 572ms 2.4ms 48.5MB 590ms 10ms node 16.17.0
c 2.c 625ms 0.5ms 0.9MB 613ms 0ms gcc 12.2.0
wasm 2.rs 678ms 0.5ms 19.1MB 667ms 0ms wasmedgec 0.11.0
wasm 2.rs 678ms 0.6ms 9.7MB 667ms 0ms wasmtime 1.0.1
wasm 2.rs 689ms 1.3ms 4.8MB 677ms 0ms wasmer/llvm 2.3.0
wasm 2.rs 756ms 0.6ms 48.8MB 780ms 3ms node 16.17.0

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
c 8-i.c 33ms 0.4ms 0.6MB 20ms 0ms zigcc 0.10.0-dev.4213+91b05ad47
c 5.c 35ms 0.4ms 1.0MB 30ms 0ms gcc 12.2.0
c 5.c 35ms 0.6ms 0.6MB 23ms 0ms zigcc 0.10.0-dev.4213+91b05ad47
c 2.c 36ms 0.5ms 0.6MB 30ms 0ms zigcc 0.10.0-dev.4213+91b05ad47
c 8-i.c 39ms 1.5ms 1.1MB 27ms 0ms clang 11.0.0
c 8-i.c 39ms 0.6ms 0.9MB 30ms 0ms gcc 12.2.0
c 5.c 41ms 2.4ms 1.1MB 30ms 0ms clang 11.0.0
c 2.c 43ms 0.3ms 1.1MB 33ms 0ms clang 11.0.0
wasm 1.rs 51ms 0.3ms 4.9MB 40ms 0ms wasmer/llvm 2.3.0
wasm 1.rs 57ms 0.4ms 11.0MB 43ms 0ms wasmtime 1.0.1
wasm 1.rs 58ms 0.8ms 18.9MB 50ms 0ms wasmedgec 0.11.0
c 2.c 65ms 0.5ms 1.0MB 53ms 0ms gcc 12.2.0
wasm 2.rs 73ms 0.4ms 4.8MB 60ms 0ms wasmer/llvm 2.3.0
wasm 2.rs 75ms 1.0ms 11.4MB 67ms 0ms wasmtime 1.0.1
wasm 2.rs 76ms 0.1ms 18.7MB 67ms 0ms wasmedgec 0.11.0
wasm 1.rs 149ms 3.1ms 48.3MB 163ms 13ms node 16.17.0
wasm 2.rs 168ms 0.9ms 52.3MB 197ms 3ms node 16.17.0

nsieve

Input: 12

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 2.rs 509ms 0.8ms 10.6MB 490ms 0ms wasmer/llvm 2.3.0
wasm 2.rs 561ms 4.7ms 23.7MB 543ms 0ms wasmedgec 0.11.0
c 1.c 650ms 12ms 41.1MB 620ms 17ms gcc 12.2.0
c 1.c 662ms 5.3ms 40.2MB 633ms 13ms zigcc 0.10.0-dev.4213+91b05ad47
wasm 1.rs 665ms 22ms 57.7MB 647ms 3ms wasmedgec 0.11.0
wasm 2.rs 687ms 3.4ms 15.8MB 673ms 0ms wasmtime 1.0.1
wasm 2.rs 727ms 3.0ms 48.9MB 740ms 7ms node 16.17.0
c 1.c 736ms 9.4ms 41.0MB 697ms 13ms clang 11.0.0
wasm 1.rs 791ms 35ms 83.4MB 793ms 17ms node 16.17.0
wasm 1.rs 802ms 18ms 44.8MB 770ms 13ms wasmer/llvm 2.3.0
wasm 1.rs 1036ms 24ms 50.0MB 1017ms 0ms wasmtime 1.0.1

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 2.rs 116ms 0.8ms 7.1MB 103ms 0ms wasmer/llvm 2.3.0
c 1.c 119ms 3.3ms 11.6MB 107ms 0ms clang 11.0.0
c 1.c 119ms 0.8ms 10.9MB 103ms 0ms zigcc 0.10.0-dev.4213+91b05ad47
c 1.c 122ms 5.9ms 11.7MB 110ms 0ms gcc 12.2.0
wasm 2.rs 136ms 0.6ms 20.0MB 127ms 0ms wasmedgec 0.11.0
wasm 1.rs 141ms 2.5ms 15.6MB 127ms 0ms wasmer/llvm 2.3.0
wasm 1.rs 147ms 1.0ms 28.9MB 137ms 0ms wasmedgec 0.11.0
wasm 2.rs 168ms 0.5ms 12.1MB 157ms 0ms wasmtime 1.0.1
wasm 1.rs 222ms 0.6ms 20.5MB 210ms 0ms wasmtime 1.0.1
wasm 1.rs 233ms 0.9ms 53.7MB 240ms 10ms node 16.17.0
wasm 2.rs 236ms 2.9ms 44.6MB 247ms 3ms node 16.17.0

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
c 4-m.c 1429ms 39ms 1.0MB 2740ms 0ms gcc 12.2.0
c 6-im.c 1589ms 17ms 1.0MB 3113ms 3ms gcc 12.2.0
c 6-im.c 1731ms 10.0ms 3.2MB 3390ms 0ms clang 11.0.0
c 4-m.c 1751ms 13ms 2.9MB 3413ms 7ms clang 11.0.0
c 5-im.c 1849ms 7.8ms 1.0MB 3633ms 0ms gcc 12.2.0
c 5-im.c 2037ms 18ms 3.2MB 3997ms 0ms clang 11.0.0
c 3-m.c 2203ms 0.8ms 0.9MB 4330ms 0ms gcc 12.2.0
c 3-m.c 2211ms 7.3ms 2.9MB 4340ms 3ms clang 11.0.0
wasm 2.rs 4127ms 2.6ms 19.1MB 4113ms 0ms wasmedgec 0.11.0
wasm 7.rs 4198ms 8.5ms 6.5MB 4180ms 0ms wasmer/llvm 2.3.0
wasm 7.rs 4264ms 0.3ms 19.0MB 4250ms 0ms wasmedgec 0.11.0
wasm 2.rs 4302ms 2.2ms 48.7MB 4317ms 10ms node 16.17.0
wasm 2.rs 4399ms 7.8ms 6.0MB 4380ms 0ms wasmer/llvm 2.3.0
wasm 7.rs 4512ms 1.7ms 48.3MB 4537ms 10ms node 16.17.0
wasm 2.rs 4543ms 13ms 11.6MB 4533ms 0ms wasmtime 1.0.1
wasm 7.rs 4610ms 0.1ms 11.1MB 4600ms 0ms wasmtime 1.0.1

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
c 4-m.c 361ms 2.5ms 1.0MB 687ms 0ms gcc 12.2.0
c 6-im.c 405ms 0.6ms 0.9MB 777ms 0ms gcc 12.2.0
c 6-im.c 446ms 3.1ms 3.1MB 853ms 0ms clang 11.0.0
c 4-m.c 446ms 2.0ms 3.0MB 850ms 0ms clang 11.0.0
c 5-im.c 471ms 0.6ms 1.0MB 910ms 0ms gcc 12.2.0
c 5-im.c 520ms 2.2ms 3.1MB 1000ms 0ms clang 11.0.0
c 3-m.c 569ms 14ms 1.0MB 1090ms 0ms gcc 12.2.0
c 3-m.c 574ms 11ms 3.0MB 1093ms 0ms clang 11.0.0
wasm 2.rs 1039ms 0.9ms 19.1MB 1023ms 3ms wasmedgec 0.11.0
wasm 7.rs 1052ms 0.4ms 6.3MB 1040ms 0ms wasmer/llvm 2.3.0
wasm 7.rs 1074ms 0.2ms 18.4MB 1070ms 0ms wasmedgec 0.11.0
wasm 2.rs 1102ms 1.3ms 5.9MB 1090ms 0ms wasmer/llvm 2.3.0
wasm 2.rs 1142ms 1.3ms 48.5MB 1167ms 3ms node 16.17.0
wasm 2.rs 1147ms 0.5ms 11.1MB 1133ms 0ms wasmtime 1.0.1
wasm 7.rs 1161ms 0.3ms 11.1MB 1147ms 0ms wasmtime 1.0.1
wasm 7.rs 1203ms 1.2ms 48.3MB 1230ms 3ms node 16.17.0

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
c 4-m.c 97ms 0.8ms 1.0MB 170ms 0ms gcc 12.2.0
c 6-im.c 110ms 2.4ms 1.0MB 193ms 0ms gcc 12.2.0
c 6-im.c 118ms 0.7ms 3.1MB 210ms 0ms clang 11.0.0
c 4-m.c 120ms 0.8ms 3.1MB 210ms 0ms clang 11.0.0
c 5-im.c 129ms 2.7ms 2.9MB 230ms 0ms gcc 12.2.0
c 5-im.c 143ms 5.6ms 3.1MB 253ms 0ms clang 11.0.0
c 3-m.c 150ms 1.0ms 1.0MB 280ms 0ms gcc 12.2.0
c 3-m.c 152ms 1.8ms 2.9MB 270ms 0ms clang 11.0.0
wasm 7.rs 267ms 0.3ms 4.9MB 257ms 0ms wasmer/llvm 2.3.0
wasm 2.rs 267ms 0.4ms 18.8MB 253ms 0ms wasmedgec 0.11.0
wasm 7.rs 276ms 0.3ms 18.8MB 260ms 0ms wasmedgec 0.11.0
wasm 2.rs 279ms 0.2ms 4.7MB 270ms 0ms wasmer/llvm 2.3.0
wasm 2.rs 293ms 0.7ms 11.4MB 280ms 0ms wasmtime 1.0.1
wasm 7.rs 296ms 0.5ms 9.5MB 287ms 0ms wasmtime 1.0.1
wasm 2.rs 365ms 1.8ms 48.3MB 383ms 7ms node 16.17.0
wasm 7.rs 388ms 5.9ms 48.2MB 400ms 10ms node 16.17.0