Odin VS Go 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
odin 1.odin 1.9ms 0.9ms 0.9MB 0ms 0ms odin 2022
go 1.go 2.4ms 2.4ms 0.0MB 0ms 0ms tinygo 0.25.0
go 1.go 2.7ms 0.2ms 2.9MB 0ms 0ms go 1.19.1

lru

Input: 1000 1000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
odin 1.odin 149ms 4.0ms 1.8MB 140ms 0ms odin 2022
go 3.go 166ms 1.0ms 0.3MB 160ms 0ms tinygo 0.25.0
go 3.go 174ms 2.3ms 4.8MB 160ms 0ms go 1.19.1

Input: 1000 3000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
odin 1.odin 435ms 4.8ms 1.8MB 427ms 0ms odin 2022
go 3.go 490ms 1.3ms 2.0MB 480ms 0ms tinygo 0.25.0
go 3.go 512ms 1.0ms 2.8MB 500ms 0ms go 1.19.1

Input: 100 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
odin 1.odin 66ms 0.3ms 0.9MB 60ms 0ms odin 2022
go 3.go 81ms 1.1ms 0.0MB 70ms 0ms tinygo 0.25.0
go 3.go 93ms 2.6ms 6.1MB 83ms 0ms go 1.19.1

mandelbrot

Input: 5000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
odin 1.odin 1583ms 4.0ms 4.5MB 1573ms 0ms odin 2022
go 1.go 4115ms 9.8ms 7.4MB 4107ms 0ms go 1.19.1
go 1.go timeout 0.0ms 0.0MB 0ms 0ms tinygo 0.25.0

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
odin 1.odin 68ms 0.6ms 0.8MB 60ms 0ms odin 2022
go 1.go 173ms 2.0ms 2.8MB 163ms 0ms go 1.19.1
go 1.go 246ms 0.5ms 0.0MB 233ms 0ms tinygo 0.25.0

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1.go 454ms 2.6ms 2.9MB 440ms 0ms go 1.19.1
go 1.go 843ms 0.3ms 0.0MB 833ms 0ms tinygo 0.25.0
odin 1.odin 2504ms 2.8ms 0.9MB 2493ms 0ms odin 2022

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1.go 49ms 2.2ms 2.9MB 40ms 0ms go 1.19.1
go 1.go 87ms 1.4ms 2.0MB 80ms 0ms tinygo 0.25.0
odin 1.odin 254ms 0.9ms 0.8MB 240ms 0ms odin 2022

nsieve

Input: 12

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1.go 614ms 8.2ms 71.7MB 587ms 10ms go 1.19.1
go 2.go 621ms 1.4ms 17.4MB 610ms 0ms tinygo 0.25.0
go 1.go 649ms 24ms 42.8MB 637ms 0ms tinygo 0.25.0
odin 1.odin 731ms 17ms 40.6MB 703ms 10ms odin 2022
go 2.go 909ms 0.8ms 19.8MB 890ms 7ms go 1.19.1
odin 2.odin 1218ms 9.6ms 6.4MB 1207ms 3ms odin 2022

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
odin 1.odin 123ms 0.6ms 11.3MB 110ms 0ms odin 2022
go 1.go 126ms 0.4ms 12.8MB 117ms 0ms tinygo 0.25.0
go 1.go 132ms 1.7ms 22.1MB 120ms 0ms go 1.19.1
go 2.go 146ms 1.2ms 5.1MB 140ms 0ms tinygo 0.25.0
go 2.go 219ms 1.7ms 7.3MB 200ms 3ms go 1.19.1
odin 2.odin 304ms 3.0ms 2.8MB 293ms 0ms odin 2022

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 4-m.go 2504ms 30ms 5.4MB 4837ms 0ms go 1.19.1
odin 1.odin 4495ms 0.6ms 2.8MB 4483ms 0ms odin 2022
go 1.go 4900ms 5.4ms 5.5MB 4893ms 0ms go 1.19.1
go 1.go timeout 0.0ms 0.0MB 0ms 0ms tinygo 0.25.0

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 4-m.go 629ms 1.6ms 2.9MB 1193ms 3ms go 1.19.1
odin 1.odin 1127ms 0.6ms 2.1MB 1117ms 0ms odin 2022
go 1.go 1229ms 2.2ms 2.9MB 1217ms 0ms go 1.19.1
go 1.go 2576ms 1.1ms 0.0MB 2563ms 0ms tinygo 0.25.0

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 4-m.go 167ms 1.5ms 2.9MB 300ms 0ms go 1.19.1
odin 1.odin 284ms 1.0ms 1.8MB 273ms 0ms odin 2022
go 1.go 310ms 2.0ms 2.9MB 300ms 0ms go 1.19.1
go 1.go 647ms 0.3ms 0.0MB 640ms 0ms tinygo 0.25.0