Lua VS Go benchmarks

Current benchmark data was generated on Thu Jul 13 2023, 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
go 1.go 3509ms 41ms 45.0MB 5013ms 43ms go 1.20.6
go 1.go 4400ms 25ms 50.6MB 4380ms 3ms tinygo 0.28.1
lua 1.lua timeout 0.0ms 119.5MB 4953ms 27ms lua 5.4.4
lua 1.lua timeout 0.0ms 209.4MB 4930ms 50ms luajit 2.1.0-beta3

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1.go 308ms 4.5ms 8.1MB 397ms 0ms go 1.20.6
lua 1.lua 416ms 5.6ms 25.2MB 393ms 10ms luajit 2.1.0-beta3
go 1.go 440ms 1.4ms 6.9MB 427ms 0ms tinygo 0.28.1
lua 1.lua 1062ms 12ms 17.4MB 1040ms 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.6ms 0.4ms 0.0MB 0ms 0ms tinygo 0.28.1
lua 1.lua 1.9ms 0.2ms 2.3MB 0ms 0ms luajit 2.1.0-beta3
go 1.go 3.0ms 0.2ms 2.9MB 0ms 0ms go 1.20.6
lua 1.lua 3.0ms 2.4ms 1.5MB 0ms 0ms lua 5.4.4

merkletrees

Input: 17

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1.go 2080ms 20ms 37.6MB 2947ms 27ms go 1.20.6
go 2.go 2382ms 46ms 49.9MB 3403ms 57ms go 1.20.6
go 1.go 2858ms 2.3ms 51.9MB 2840ms 3ms tinygo 0.28.1
go 2.go 4300ms 6.9ms 120.1MB 4273ms 10ms tinygo 0.28.1
lua 1.lua timeout 0.0ms 159.2MB 4940ms 43ms lua 5.4.4
lua 1.lua timeout 0.0ms 183.3MB 4927ms 53ms luajit 2.1.0-beta3

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1.go 444ms 5.6ms 12.3MB 607ms 7ms go 1.20.6
go 2.go 510ms 1.8ms 13.2MB 720ms 7ms go 1.20.6
go 1.go 607ms 1.8ms 13.1MB 593ms 0ms tinygo 0.28.1
go 2.go 833ms 2.9ms 29.9MB 820ms 0ms tinygo 0.28.1
lua 1.lua 1526ms 27ms 36.0MB 1503ms 7ms luajit 2.1.0-beta3
lua 1.lua 2805ms 35ms 41.6MB 2773ms 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 430ms 0.7ms 0.0MB 420ms 0ms tinygo 0.28.1
go 1.go 456ms 1.6ms 2.9MB 450ms 0ms go 1.20.6
lua 4.lua 1109ms 7.7ms 1.4MB 1097ms 0ms luajit 2.1.0-beta3
lua 4.lua timeout 0.0ms 1.4MB 4987ms 0ms lua 5.4.4

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1.go 45ms 0.7ms 0.0MB 37ms 0ms tinygo 0.28.1
go 1.go 52ms 0.6ms 2.9MB 40ms 0ms go 1.20.6
lua 4.lua 118ms 7.0ms 1.4MB 110ms 0ms luajit 2.1.0-beta3
lua 4.lua 1211ms 12ms 1.4MB 1200ms 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 2512ms 26ms 5.5MB 4843ms 0ms go 1.20.6
go 1.go 4902ms 6.8ms 5.5MB 4893ms 0ms go 1.20.6
go 1.go timeout 0.0ms 2.0MB 4990ms 0ms tinygo 0.28.1
lua 1.lua timeout 0.0ms 2.2MB 4990ms 0ms lua 5.4.4
lua 1.lua timeout 0.0ms 2.5MB 4990ms 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 631ms 3.4ms 3.4MB 1200ms 0ms go 1.20.6
go 1.go 1228ms 11ms 2.9MB 1213ms 0ms go 1.20.6
lua 1.lua 1559ms 1.5ms 2.5MB 1547ms 0ms luajit 2.1.0-beta3
go 1.go 2577ms 1.8ms 0.0MB 2560ms 0ms tinygo 0.28.1
lua 1.lua timeout 0.0ms 2.2MB 4990ms 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 167ms 1.5ms 3.4MB 297ms 0ms go 1.20.6
go 1.go 312ms 3.2ms 2.9MB 300ms 0ms go 1.20.6
lua 1.lua 393ms 0.7ms 1.4MB 383ms 0ms luajit 2.1.0-beta3
go 1.go 646ms 1.0ms 0.0MB 637ms 0ms tinygo 0.28.1
lua 1.lua timeout 0.0ms 1.5MB 4987ms 0ms lua 5.4.4