Odin VS Rust benchmarks

Current benchmark data was generated on Thu Sep 22 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.7ms 0.5ms 0.9MB 0ms 0ms odin 2022
rust 1.rs 1.7ms 0.6ms 0.6MB 0ms 0ms rustc 1.66.0-nightly
rust 1.rs 1.7ms 0.6ms 0.6MB 0ms 0ms rustc 1.64.0

lru

Input: 1000 1000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 0-unsafe.rs 58ms 2.1ms 0.6MB 50ms 0ms rustc 1.64.0
rust 1.rs 78ms 8.4ms 2.0MB 67ms 0ms rustc 1.64.0
odin 1.odin 182ms 0.8ms 1.9MB 170ms 0ms odin 2022

Input: 1000 3000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 0-unsafe.rs 202ms 7.7ms 0.6MB 193ms 0ms rustc 1.64.0
rust 1.rs 333ms 16ms 2.2MB 323ms 0ms rustc 1.64.0
odin 1.odin 545ms 3.0ms 1.9MB 530ms 0ms odin 2022

Input: 100 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 0-unsafe.rs 37ms 0.5ms 0.6MB 23ms 0ms rustc 1.64.0
rust 1.rs 46ms 2.0ms 0.6MB 37ms 0ms rustc 1.64.0
odin 1.odin 85ms 2.6ms 0.9MB 73ms 0ms odin 2022

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 4-i.rs 252ms 0.0ms 0.6MB 240ms 0ms rustc 1.64.0
rust 7-i.rs 305ms 0.6ms 0.6MB 297ms 0ms rustc 1.64.0
rust 3.rs 339ms 0.4ms 0.7MB 330ms 0ms rustc 1.66.0-nightly
rust 2.rs 345ms 1.7ms 0.6MB 333ms 0ms rustc 1.64.0
rust 1.rs 387ms 6.1ms 0.6MB 373ms 0ms rustc 1.64.0
odin 1.odin 2502ms 1.7ms 0.9MB 2490ms 0ms odin 2022

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 4-i.rs 28ms 0.2ms 0.6MB 20ms 0ms rustc 1.64.0
rust 7-i.rs 34ms 1.1ms 0.6MB 23ms 0ms rustc 1.64.0
rust 3.rs 36ms 0.4ms 0.6MB 30ms 0ms rustc 1.66.0-nightly
rust 2.rs 37ms 0.5ms 0.6MB 27ms 0ms rustc 1.64.0
rust 1.rs 41ms 0.7ms 0.6MB 30ms 0ms rustc 1.64.0
odin 1.odin 253ms 0.8ms 0.9MB 240ms 0ms odin 2022

nsieve

Input: 12

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 2.rs 462ms 2.0ms 6.6MB 450ms 0ms rustc 1.64.0
odin 1.odin 726ms 24ms 40.6MB 700ms 10ms odin 2022
rust 1.rs 847ms 5.7ms 40.8MB 820ms 7ms rustc 1.64.0
odin 2.odin 1160ms 1.8ms 6.3MB 1143ms 3ms odin 2022

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 2.rs 106ms 0.5ms 3.2MB 93ms 0ms rustc 1.64.0
odin 1.odin 122ms 0.6ms 11.4MB 110ms 0ms odin 2022
rust 1.rs 130ms 1.7ms 11.7MB 117ms 0ms rustc 1.64.0
odin 2.odin 283ms 0.6ms 2.8MB 270ms 0ms odin 2022

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 8-m.rs 1065ms 2.8ms 2.6MB 2060ms 0ms rustc 1.66.0-nightly
rust 7-m.rs 1066ms 4.5ms 2.2MB 2060ms 0ms rustc 1.64.0
rust 8.rs 2063ms 3.3ms 2.5MB 2050ms 0ms rustc 1.66.0-nightly
rust 7.rs 2065ms 5.3ms 2.0MB 2050ms 0ms rustc 1.64.0
rust 2-m.rs 2151ms 4.0ms 2.1MB 4187ms 0ms rustc 1.64.0
odin 1.odin 4618ms 1.5ms 2.9MB 4607ms 0ms odin 2022
rust 2.rs timeout 0.0ms 0.0MB 0ms 0ms rustc 1.64.0

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 7-m.rs 275ms 0.4ms 0.7MB 507ms 3ms rustc 1.64.0
rust 8-m.rs 277ms 2.7ms 2.4MB 510ms 0ms rustc 1.66.0-nightly
rust 7.rs 517ms 0.3ms 0.6MB 507ms 0ms rustc 1.64.0
rust 8.rs 518ms 0.1ms 2.2MB 510ms 0ms rustc 1.66.0-nightly
rust 2-m.rs 545ms 0.6ms 2.1MB 1040ms 0ms rustc 1.64.0
odin 1.odin 1158ms 0.3ms 2.3MB 1147ms 0ms odin 2022
rust 2.rs 1707ms 1.1ms 0.6MB 1697ms 0ms rustc 1.64.0

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 7-m.rs 75ms 1.2ms 2.1MB 130ms 0ms rustc 1.64.0
rust 8-m.rs 77ms 3.5ms 2.2MB 123ms 0ms rustc 1.66.0-nightly
rust 8.rs 132ms 0.8ms 2.1MB 120ms 0ms rustc 1.66.0-nightly
rust 7.rs 132ms 0.8ms 0.6MB 120ms 0ms rustc 1.64.0
rust 2-m.rs 145ms 1.3ms 0.7MB 257ms 0ms rustc 1.64.0
odin 1.odin 294ms 3.8ms 1.9MB 280ms 0ms odin 2022
rust 2.rs 429ms 0.2ms 0.6MB 420ms 0ms rustc 1.64.0