Elixir VS Go 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.)

coro-prime-sieve

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1-m.go 838ms 145ms 13.6MB 1630ms 0ms go 1.18.2
go 1.go 1779ms 20ms 257.5MB 1707ms 57ms tinygo 0.23.0
elixir 1.ex 4729ms 126ms 57.8MB 4753ms 133ms elixir 12.3.2

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1-m.go 62ms 0.8ms 5.4MB 97ms 0ms go 1.18.2
go 1.go 275ms 1.2ms 66.3MB 257ms 3ms tinygo 0.23.0
elixir 1.ex 496ms 9.1ms 49.6MB 517ms 60ms elixir 12.3.2

edigits

Input: 250001

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1.go 170ms 2.3ms 8.4MB 160ms 0ms go 1.18.2
elixir 1.ex timeout 0.0ms 0.0MB 0ms 0ms elixir 12.3.2

Input: 100000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1.go 53ms 0.8ms 7.2MB 40ms 0ms go 1.18.2
elixir 1.ex timeout 0.0ms 0.0MB 0ms 0ms elixir 12.3.2

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1.go 0.7ms 0.1ms 0.0MB 0ms 0ms tinygo 0.23.0
go 1.go 2.9ms 0.3ms 2.8MB 0ms 0ms go 1.18.2
elixir 1.ex 210ms 1.8ms 50.8MB 222ms 42ms elixir 12.3.2

pidigits

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 8.go 1377ms 4.0ms 8.6MB 1357ms 3ms go 1.18.2
elixir 1.ex timeout 0.0ms 0.0MB 0ms 0ms elixir 12.3.2

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 8.go 329ms 1.8ms 8.5MB 310ms 0ms go 1.18.2
elixir 1.ex 1303ms 2.6ms 49.7MB 1317ms 150ms elixir 12.3.2

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 4-m.go 2513ms 5.8ms 5.3MB 4870ms 7ms go 1.18.2
go 1.go 4978ms 9.8ms 5.4MB 4963ms 0ms go 1.18.2
elixir 1.ex timeout 0.0ms 0.0MB 0ms 0ms elixir 12.3.2
go 1.go timeout 0.0ms 0.0MB 0ms 0ms tinygo 0.23.0

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 4-m.go 636ms 1.3ms 3.3MB 1207ms 0ms go 1.18.2
go 1.go 1246ms 1.8ms 3.3MB 1230ms 3ms go 1.18.2
go 1.go 2576ms 0.3ms 0.0MB 2567ms 0ms tinygo 0.23.0
elixir 1.ex timeout 0.0ms 0.0MB 0ms 0ms elixir 12.3.2

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 4-m.go 168ms 1.2ms 2.8MB 300ms 0ms go 1.18.2
go 1.go 317ms 2.2ms 2.8MB 303ms 0ms go 1.18.2
go 1.go 647ms 0.4ms 2.0MB 640ms 0ms tinygo 0.23.0
elixir 1.ex timeout 0.0ms 0.0MB 0ms 0ms elixir 12.3.2