Odin VS Nim benchmarks

Current benchmark data was generated on Mon Feb 06 2023, full log can be found HERE

CONTRIBUTIONS are WELCOME!

[x86_64][2 cores] Intel(R) Xeon(R) Platinum 8272CL CPU @ 2.60GHz (Model 85)

* -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
nim 2.nim 2133ms 3.3ms 33.6MB 2107ms 13ms nim 1.6.10
nim 2.nim 2138ms 5.8ms 35.0MB 2120ms 3ms nim/clang 1.6.10
odin 1.odin 4635ms 17ms 49.5MB 4597ms 17ms odin 2023

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 2.nim 201ms 0.2ms 5.7MB 190ms 0ms nim/clang 1.6.10
nim 2.nim 202ms 1.0ms 5.6MB 190ms 0ms nim 1.6.10
odin 1.odin 398ms 6.4ms 7.5MB 383ms 0ms odin 2023

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 1.nim 1.4ms 0.5ms 1.0MB 0ms 0ms nim 1.6.10
nim 1.nim 1.7ms 0.5ms 1.3MB 0ms 0ms nim/clang 1.6.10
odin 1.odin 1.8ms 0.7ms 1.3MB 0ms 0ms odin 2023

knucleotide

Input: 2500000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
odin 1-m.odin 932ms 4.7ms 46.5MB 1617ms 50ms odin 2023

Input: 250000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
odin 1.odin 219ms 1.6ms 32.7MB 263ms 40ms odin 2023

lru

Input: 1000 1000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 2.nim 149ms 0.3ms 1.3MB 140ms 0ms nim/clang 1.6.10
nim 2.nim 152ms 0.1ms 1.0MB 140ms 0ms nim 1.6.10
odin 1.odin 268ms 1.7ms 1.3MB 260ms 0ms odin 2023
nim 1.nim timeout 0.0ms 1.0MB 4990ms 0ms nim 1.6.10
nim 1.nim timeout 0.0ms 1.3MB 4983ms 0ms nim/clang 1.6.10

Input: 1000 3000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 2.nim 440ms 0.3ms 1.2MB 430ms 0ms nim/clang 1.6.10
nim 2.nim 451ms 0.0ms 1.0MB 440ms 0ms nim 1.6.10
odin 1.odin 809ms 3.6ms 1.2MB 800ms 0ms odin 2023
nim 1.nim timeout 0.0ms 1.1MB 4987ms 0ms nim 1.6.10
nim 1.nim timeout 0.0ms 1.3MB 4987ms 0ms nim/clang 1.6.10

Input: 100 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 2.nim 65ms 0.4ms 1.2MB 53ms 0ms nim/clang 1.6.10
nim 2.nim 66ms 0.7ms 1.0MB 60ms 0ms nim 1.6.10
odin 1.odin 113ms 1.7ms 1.3MB 100ms 0ms odin 2023
nim 1.nim 388ms 6.2ms 1.3MB 377ms 0ms nim/clang 1.6.10
nim 1.nim 438ms 20ms 1.0MB 427ms 0ms nim 1.6.10

mandelbrot

Input: 5000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 1.nim 587ms 5.9ms 4.8MB 573ms 0ms nim/clang 1.6.10
nim 1.nim 869ms 0.8ms 4.5MB 860ms 0ms nim 1.6.10
odin 1.odin 1375ms 0.9ms 4.5MB 1363ms 0ms odin 2023

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 1.nim 27ms 0.5ms 1.2MB 20ms 0ms nim/clang 1.6.10
nim 1.nim 39ms 1.5ms 1.1MB 30ms 0ms nim 1.6.10
odin 1.odin 58ms 1.5ms 1.2MB 50ms 0ms odin 2023

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 2.nim 404ms 0.9ms 1.3MB 390ms 0ms nim 1.6.10
nim 2.nim 415ms 13ms 1.2MB 403ms 0ms nim/clang 1.6.10
odin 1-i.odin 559ms 1.2ms 1.3MB 550ms 0ms odin 2023
odin 1.odin 2350ms 2.1ms 1.3MB 2337ms 0ms odin 2023

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 2.nim 43ms 0.7ms 1.3MB 30ms 0ms nim 1.6.10
nim 2.nim 44ms 0.9ms 1.3MB 30ms 0ms nim/clang 1.6.10
odin 1-i.odin 58ms 0.6ms 1.3MB 50ms 0ms odin 2023
odin 1.odin 237ms 0.2ms 1.2MB 230ms 0ms odin 2023

nsieve

Input: 12

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 2.nim 689ms 7.0ms 6.3MB 677ms 0ms nim/clang 1.6.10
nim 2.nim 838ms 3.1ms 6.0MB 827ms 0ms nim 1.6.10
nim 1.nim 1031ms 44ms 40.6MB 1010ms 10ms nim 1.6.10
odin 2.odin 1058ms 1.6ms 6.4MB 1050ms 0ms odin 2023
odin 1.odin 1118ms 56ms 40.5MB 1090ms 10ms odin 2023
nim 1.nim 1316ms 20ms 41.3MB 1290ms 10ms nim/clang 1.6.10

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 1.nim 122ms 2.5ms 11.1MB 107ms 0ms nim 1.6.10
odin 1.odin 132ms 0.5ms 11.3MB 117ms 3ms odin 2023
nim 1.nim 142ms 1.3ms 11.2MB 130ms 0ms nim/clang 1.6.10
nim 2.nim 154ms 1.1ms 3.3MB 140ms 0ms nim/clang 1.6.10
nim 2.nim 198ms 0.5ms 3.1MB 183ms 0ms nim 1.6.10
odin 2.odin 253ms 0.2ms 2.7MB 240ms 0ms odin 2023

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 1.nim 3433ms 1.3ms 1.3MB 3420ms 0ms nim/clang 1.6.10
nim 1.nim 3434ms 1.2ms 1.3MB 3420ms 0ms nim 1.6.10
odin 1.odin 3552ms 1.5ms 2.8MB 3540ms 0ms odin 2023

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 1.nim 861ms 0.6ms 1.3MB 847ms 0ms nim 1.6.10
nim 1.nim 862ms 1.6ms 1.3MB 850ms 0ms nim/clang 1.6.10
odin 1.odin 891ms 1.2ms 2.1MB 877ms 0ms odin 2023

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 1.nim 217ms 0.3ms 1.3MB 207ms 0ms nim/clang 1.6.10
nim 1.nim 218ms 0.4ms 1.3MB 207ms 0ms nim 1.6.10
odin 1.odin 225ms 0.1ms 1.9MB 213ms 0ms odin 2023