Lua VS C# benchmarks

Current benchmark data was generated on Mon Apr 14 2025, full log can be found HERE

CONTRIBUTIONS are WELCOME!

[x86_64][4 cores] AMD EPYC 7763 64-Core Processor (Model 1)

* -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
csharp 1.cs 959ms 8.6ms 205.9MB 957ms 147ms dotnet 9.0.203
csharp 1.cs 974ms 8.9ms 178.1MB 980ms 130ms dotnet/aot 9.0.203
csharp 1.cs 1663ms 23ms 105.5MB 1877ms 200ms mono 6.12.0
lua 1.lua 3698ms 5.1ms 172.9MB 3550ms 133ms luajit 2.1.0-beta3
lua 1.lua timeout 0.0ms 105.0MB 4950ms 37ms lua 5.4.7

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
csharp 1.cs 122ms 4.1ms 33.2MB 90ms 30ms dotnet/aot 9.0.203
csharp 1.cs 143ms 1.7ms 42.2MB 120ms 13ms mono 6.12.0
csharp 1.cs 195ms 2.0ms 49.9MB 157ms 40ms dotnet 9.0.203
lua 1.lua 305ms 9.6ms 15.8MB 283ms 10ms luajit 2.1.0-beta3
lua 1.lua 819ms 2.0ms 16.9MB 803ms 0ms lua 5.4.7

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
lua 1.lua 1.5ms 0.2ms 2.1MB 0ms 0ms lua 5.4.7
lua 1.lua 1.7ms 0.3ms 2.4MB 0ms 0ms luajit 2.1.0-beta3
csharp 1.cs 9.0ms 3.9ms 6.8MB 0ms 0ms dotnet/aot 9.0.203
csharp 1.cs 31ms 0.6ms 21.3MB 20ms 0ms mono 6.12.0
csharp 1.cs 35ms 1.3ms 26.1MB 20ms 2ms dotnet 9.0.203

merkletrees

Input: 17

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
csharp 2.cs 540ms 13ms 119.9MB 497ms 83ms dotnet/aot 9.0.203
csharp 1.cs 601ms 11ms 145.0MB 553ms 110ms dotnet/aot 9.0.203
csharp 2.cs 682ms 13ms 136.3MB 630ms 93ms dotnet 9.0.203
csharp 1.cs 702ms 20ms 168.5MB 643ms 127ms dotnet 9.0.203
csharp 1.cs 1284ms 31ms 144.0MB 1490ms 167ms mono 6.12.0
lua 1.lua timeout 0.0ms 107.4MB 4947ms 37ms lua 5.4.7
lua 1.lua timeout 0.0ms 149.3MB 4937ms 50ms luajit 2.1.0-beta3

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
csharp 2.cs 132ms 3.0ms 57.9MB 107ms 30ms dotnet/aot 9.0.203
csharp 1.cs 155ms 2.9ms 73.8MB 123ms 50ms dotnet/aot 9.0.203
csharp 2.cs 264ms 3.0ms 73.1MB 230ms 37ms dotnet 9.0.203
csharp 1.cs 267ms 2.8ms 69.3MB 240ms 33ms mono 6.12.0
csharp 1.cs 277ms 3.0ms 89.8MB 247ms 53ms dotnet 9.0.203
lua 1.lua 1626ms 22ms 31.1MB 1600ms 13ms luajit 2.1.0-beta3
lua 1.lua 2403ms 68ms 28.8MB 2380ms 10ms lua 5.4.7

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
csharp 9.cs 360ms 2.9ms 27.6MB 340ms 7ms dotnet 9.0.203
csharp 8.cs 371ms 1.0ms 9.9MB 360ms 0ms dotnet/aot 9.0.203
csharp 8.cs 419ms 1.8ms 27.4MB 400ms 3ms dotnet 9.0.203
lua 4.lua 711ms 0.5ms 2.4MB 700ms 0ms luajit 2.1.0-beta3
csharp 8.cs 1254ms 9.8ms 22.8MB 1240ms 0ms mono 6.12.0
lua 4.lua timeout 0.0ms 2.3MB 4990ms 0ms lua 5.4.7

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
csharp 8.cs 46ms 1.4ms 9.9MB 30ms 0ms dotnet/aot 9.0.203
lua 4.lua 75ms 2.0ms 2.3MB 70ms 0ms luajit 2.1.0-beta3
csharp 9.cs 93ms 4.5ms 27.6MB 70ms 7ms dotnet 9.0.203
csharp 8.cs 99ms 8.1ms 27.6MB 80ms 3ms dotnet 9.0.203
csharp 8.cs 162ms 0.8ms 20.9MB 150ms 0ms mono 6.12.0
lua 4.lua 1133ms 38ms 2.3MB 1123ms 0ms lua 5.4.7

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
csharp 3-m.cs 1860ms 1.8ms 10.4MB 7253ms 10ms dotnet/aot 9.0.203
csharp 3-m.cs 1926ms 4.5ms 29.9MB 7353ms 23ms dotnet 9.0.203
lua 1.lua 4064ms 3.3ms 2.5MB 4053ms 0ms luajit 2.1.0-beta3
csharp 3-m.cs 4693ms 178ms 25.5MB 17890ms 10ms mono 6.12.0
lua 1.lua timeout 0.0ms 2.4MB 4990ms 0ms lua 5.4.7

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
csharp 3-m.cs 494ms 33ms 10.5MB 1787ms 3ms dotnet/aot 9.0.203
csharp 3-m.cs 657ms 23ms 30.0MB 1690ms 10ms dotnet 9.0.203
lua 1.lua 1022ms 2.6ms 2.4MB 1013ms 0ms luajit 2.1.0-beta3
csharp 3-m.cs 1197ms 19ms 27.2MB 4503ms 13ms mono 6.12.0
lua 1.lua timeout 0.0ms 2.3MB 4990ms 0ms lua 5.4.7

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
csharp 3-m.cs 128ms 1.5ms 10.4MB 450ms 0ms dotnet/aot 9.0.203
csharp 3-m.cs 248ms 8.5ms 28.6MB 463ms 10ms dotnet 9.0.203
lua 1.lua 260ms 3.0ms 2.3MB 250ms 0ms luajit 2.1.0-beta3
csharp 3-m.cs 352ms 13ms 24.8MB 1190ms 10ms mono 6.12.0
lua 1.lua timeout 0.0ms 2.0MB 4990ms 0ms lua 5.4.7