Lua VS Go benchmarks

Current benchmark data was generated on Wed Feb 08 2023, full log can be found HERE

CONTRIBUTIONS are WELCOME!

[x86_64][2 cores] Intel(R) Xeon(R) Platinum 8171M 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.)

binarytrees

Input: 18

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1.go 3847ms 17ms 45.6MB 5503ms 83ms go 1.19.5
go 1.go timeout 0.0ms 39.4MB 4970ms 7ms tinygo 0.25.0
lua 1.lua timeout 0.0ms 119.5MB 4903ms 70ms lua 5.4.4
lua 1.lua timeout 0.0ms 174.6MB 4897ms 83ms luajit 2.1.0-beta3

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1.go 324ms 2.4ms 8.3MB 417ms 3ms go 1.19.5
go 1.go 438ms 0.7ms 5.9MB 423ms 0ms tinygo 0.25.0
lua 1.lua 584ms 53ms 24.6MB 553ms 10ms luajit 2.1.0-beta3
lua 1.lua 1408ms 8.5ms 17.4MB 1387ms 3ms lua 5.4.4

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1.go 1.9ms 0.9ms 0.2MB 0ms 0ms tinygo 0.25.0
lua 1.lua 2.4ms 0.8ms 2.2MB 0ms 0ms luajit 2.1.0-beta3
lua 1.lua 2.4ms 1.0ms 1.4MB 0ms 0ms lua 5.4.4
go 1.go 3.4ms 0.5ms 2.9MB 0ms 0ms go 1.19.5

merkletrees

Input: 17

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1.go 2523ms 14ms 38.2MB 3530ms 67ms go 1.19.5
go 2.go 2861ms 21ms 45.1MB 4040ms 80ms go 1.19.5
go 1.go 4946ms 23ms 212.6MB 4880ms 50ms tinygo 0.25.0
go 2.go timeout 0.0ms 51.3MB 4973ms 3ms tinygo 0.25.0
lua 1.lua timeout 0.0ms 159.1MB 4913ms 67ms lua 5.4.4
lua 1.lua timeout 0.0ms 180.9MB 4870ms 107ms luajit 2.1.0-beta3

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1.go 535ms 12ms 12.1MB 713ms 20ms go 1.19.5
go 2.go 606ms 2.8ms 13.4MB 837ms 7ms go 1.19.5
go 1.go 864ms 21ms 51.9MB 837ms 7ms tinygo 0.25.0
go 2.go 1659ms 8.8ms 39.3MB 1637ms 7ms tinygo 0.25.0
lua 1.lua 2162ms 57ms 38.5MB 2130ms 13ms luajit 2.1.0-beta3
lua 1.lua 3623ms 55ms 41.6MB 3593ms 13ms lua 5.4.4

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1.go 599ms 3.1ms 2.9MB 587ms 0ms go 1.19.5
go 1.go 839ms 2.3ms 2.0MB 830ms 0ms tinygo 0.25.0
lua 4.lua 1337ms 28ms 1.5MB 1320ms 0ms luajit 2.1.0-beta3
lua 4.lua timeout 0.0ms 1.5MB 4990ms 0ms lua 5.4.4

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1.go 65ms 1.5ms 2.9MB 50ms 0ms go 1.19.5
go 1.go 84ms 1.0ms 0.0MB 73ms 0ms tinygo 0.25.0
lua 4.lua 138ms 1.4ms 1.5MB 123ms 0ms luajit 2.1.0-beta3
lua 4.lua 1886ms 102ms 1.4MB 1873ms 0ms lua 5.4.4

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 4-m.go 2681ms 27ms 4.9MB 5153ms 3ms go 1.19.5
go 1.go timeout 0.0ms 5.4MB 4983ms 3ms go 1.19.5
go 1.go timeout 0.0ms 2.4MB 4983ms 0ms tinygo 0.25.0
lua 1.lua timeout 0.0ms 2.2MB 4977ms 3ms lua 5.4.4
lua 1.lua timeout 0.0ms 2.5MB 4987ms 0ms luajit 2.1.0-beta3

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 4-m.go 674ms 7.1ms 3.4MB 1277ms 0ms go 1.19.5
go 1.go 1330ms 2.8ms 2.9MB 1323ms 0ms go 1.19.5
lua 1.lua 1702ms 29ms 2.5MB 1687ms 0ms luajit 2.1.0-beta3
go 1.go timeout 0.0ms 0.0MB 4983ms 0ms tinygo 0.25.0
lua 1.lua timeout 0.0ms 2.3MB 4987ms 0ms lua 5.4.4

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 4-m.go 182ms 3.8ms 2.9MB 313ms 0ms go 1.19.5
go 1.go 336ms 2.1ms 2.9MB 327ms 0ms go 1.19.5
lua 1.lua 434ms 2.7ms 1.5MB 423ms 0ms luajit 2.1.0-beta3
go 1.go 1953ms 7.3ms 0.0MB 1940ms 0ms tinygo 0.25.0
lua 1.lua timeout 0.0ms 1.5MB 4990ms 0ms lua 5.4.4