Odin VS Rust benchmarks

Current benchmark data was generated on Fri May 20 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
rust 1.rs 2.1ms 1.0ms 0.6MB 0ms 0ms rustc 1.63.0
odin 1.odin 2.1ms 1.0ms 0.9MB 0ms 0ms odin 2022
rust 1.rs 6.1ms 9.2ms 0.6MB 0ms 0ms rustc 1.61.0

lru

Input: 1000 1000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 0-unsafe.rs 53ms 6.9ms 0.6MB 43ms 0ms rustc 1.61.0
rust 1.rs 80ms 1.6ms 2.1MB 70ms 0ms rustc 1.61.0
odin 1.odin 176ms 1.5ms 1.8MB 160ms 0ms odin 2022

Input: 1000 3000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 0-unsafe.rs 208ms 2.4ms 0.6MB 200ms 0ms rustc 1.61.0
rust 1.rs 301ms 19ms 2.0MB 290ms 0ms rustc 1.61.0
odin 1.odin 517ms 3.6ms 1.8MB 503ms 0ms odin 2022

Input: 100 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 0-unsafe.rs 36ms 2.1ms 0.6MB 23ms 0ms rustc 1.61.0
rust 1.rs 46ms 1.2ms 0.7MB 40ms 0ms rustc 1.61.0
odin 1.odin 82ms 0.2ms 0.8MB 70ms 0ms odin 2022

mandelbrot

Input: 5000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 9.rs 415ms 1.0ms 5.0MB 403ms 0ms rustc 1.63.0
rust 8.rs 581ms 0.7ms 4.9MB 570ms 0ms rustc 1.61.0
odin 1.odin 1615ms 0.8ms 4.7MB 1603ms 0ms odin 2022

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 9.rs 21ms 0.6ms 2.1MB 10ms 0ms rustc 1.63.0
rust 8.rs 30ms 2.5ms 2.0MB 17ms 0ms rustc 1.61.0
odin 1.odin 69ms 0.3ms 0.8MB 60ms 0ms odin 2022

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 4-i.rs 253ms 0.8ms 0.6MB 240ms 0ms rustc 1.61.0
rust 7-i.rs 305ms 0.2ms 0.6MB 290ms 0ms rustc 1.61.0
rust 3.rs 319ms 0.2ms 0.6MB 310ms 0ms rustc 1.63.0
rust 2.rs 347ms 9.0ms 0.6MB 337ms 0ms rustc 1.61.0
rust 1.rs 390ms 11ms 0.6MB 377ms 0ms rustc 1.61.0
odin 1.odin 2543ms 1.4ms 0.8MB 2530ms 0ms odin 2022

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 4-i.rs 29ms 1.4ms 0.6MB 20ms 0ms rustc 1.61.0
rust 7-i.rs 33ms 1.1ms 0.6MB 23ms 0ms rustc 1.61.0
rust 3.rs 35ms 1.8ms 0.6MB 30ms 0ms rustc 1.63.0
rust 1.rs 42ms 1.4ms 0.6MB 30ms 0ms rustc 1.61.0
rust 2.rs 50ms 12ms 0.6MB 40ms 0ms rustc 1.61.0
odin 1.odin 256ms 0.3ms 0.8MB 250ms 0ms odin 2022

nsieve

Input: 12

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 2.rs 465ms 0.8ms 6.5MB 450ms 0ms rustc 1.61.0
odin 1.odin 819ms 17ms 40.6MB 797ms 7ms odin 2022
rust 1.rs 898ms 26ms 41.0MB 870ms 10ms rustc 1.61.0
odin 2.odin 1251ms 15ms 6.4MB 1240ms 0ms odin 2022

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 2.rs 108ms 1.9ms 3.1MB 100ms 0ms rustc 1.61.0
odin 1.odin 122ms 0.2ms 11.4MB 110ms 0ms odin 2022
rust 1.rs 131ms 1.0ms 11.7MB 117ms 0ms rustc 1.61.0
odin 2.odin 303ms 3.5ms 2.9MB 293ms 0ms odin 2022

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 7-m.rs 1065ms 1.3ms 2.2MB 2063ms 0ms rustc 1.61.0
rust 8-m.rs 1067ms 3.9ms 2.3MB 2060ms 3ms rustc 1.63.0
rust 8.rs 2062ms 1.0ms 2.5MB 2050ms 0ms rustc 1.63.0
rust 7.rs 2063ms 0.4ms 2.1MB 2050ms 0ms rustc 1.61.0
rust 2-m.rs 2152ms 7.6ms 2.2MB 4170ms 3ms rustc 1.61.0
odin 1.odin 4493ms 1.5ms 2.9MB 4480ms 0ms odin 2022
rust 2.rs timeout 0.0ms 0.0MB 0ms 0ms rustc 1.61.0

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 7-m.rs 275ms 1.2ms 0.7MB 510ms 0ms rustc 1.61.0
rust 8-m.rs 275ms 1.1ms 2.2MB 507ms 0ms rustc 1.63.0
rust 8.rs 518ms 0.3ms 2.2MB 510ms 0ms rustc 1.63.0
rust 7.rs 518ms 0.9ms 0.6MB 510ms 0ms rustc 1.61.0
rust 2-m.rs 543ms 1.0ms 2.1MB 1033ms 0ms rustc 1.61.0
odin 1.odin 1128ms 0.4ms 2.4MB 1120ms 0ms odin 2022
rust 2.rs 1704ms 0.1ms 0.6MB 1690ms 0ms rustc 1.61.0

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 8-m.rs 76ms 0.9ms 2.2MB 127ms 0ms rustc 1.63.0
rust 7-m.rs 76ms 1.2ms 0.7MB 127ms 0ms rustc 1.61.0
rust 8.rs 132ms 1.4ms 2.1MB 120ms 0ms rustc 1.63.0
rust 7.rs 133ms 1.1ms 0.6MB 120ms 0ms rustc 1.61.0
rust 2-m.rs 144ms 0.6ms 0.7MB 257ms 0ms rustc 1.61.0
odin 1.odin 285ms 0.2ms 1.9MB 273ms 0ms odin 2022
rust 2.rs 429ms 1.3ms 0.6MB 417ms 0ms rustc 1.61.0