Nim VS Odin benchmarks

Current benchmark data was generated on Fri Sep 30 2022, 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 3223ms 17ms 33.9MB 3200ms 3ms nim 1.6.8
nim 2.nim 3325ms 6.9ms 34.9MB 3293ms 10ms nim/clang 1.6.8

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 2.nim 307ms 5.2ms 5.5MB 293ms 0ms nim 1.6.8
nim 2.nim 313ms 1.4ms 5.7MB 300ms 0ms nim/clang 1.6.8

coro-prime-sieve

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 1.nim timeout 0.0ms 0.0MB 0ms 0ms nim 1.6.8
nim 1.nim timeout 0.0ms 0.0MB 0ms 0ms nim/clang 1.6.8

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 1.nim timeout 0.0ms 0.0MB 0ms 0ms nim 1.6.8
nim 1.nim timeout 0.0ms 0.0MB 0ms 0ms nim/clang 1.6.8

edigits

Input: 250001

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 1.nim timeout 0.0ms 0.0MB 0ms 0ms nim 1.6.8
nim 1.nim timeout 0.0ms 0.0MB 0ms 0ms nim/clang 1.6.8

Input: 100000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 1.nim timeout 0.0ms 0.0MB 0ms 0ms nim 1.6.8
nim 1.nim timeout 0.0ms 0.0MB 0ms 0ms nim/clang 1.6.8

fasta

Input: 2500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 2.nim 241ms 0.8ms 0.7MB 230ms 0ms nim 1.6.8
nim 2.nim 295ms 0.4ms 1.0MB 283ms 0ms nim/clang 1.6.8
nim 1.nim 719ms 5.4ms 0.7MB 643ms 57ms nim 1.6.8
nim 1.nim 728ms 0.4ms 1.0MB 637ms 73ms nim/clang 1.6.8

Input: 250000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 2.nim 27ms 1.0ms 0.7MB 20ms 0ms nim 1.6.8
nim 2.nim 33ms 0.4ms 1.0MB 20ms 0ms nim/clang 1.6.8
nim 1.nim 75ms 0.6ms 1.6MB 57ms 0ms nim 1.6.8
nim 1.nim 76ms 1.1ms 1.0MB 60ms 3ms nim/clang 1.6.8

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 1.nim 2.0ms 0.7ms 0.9MB 0ms 0ms nim/clang 1.6.8
nim 1.nim 2.3ms 0.8ms 0.7MB 0ms 0ms nim 1.6.8
odin 1.odin 2.6ms 0.8ms 0.8MB 0ms 0ms odin 2022

http-server

Input: 3000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 1.nim 912ms 16ms 94.1MB 450ms 427ms nim/clang 1.6.8
nim 1.nim 927ms 12ms 94.4MB 470ms 423ms nim 1.6.8

Input: 500

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 1.nim 144ms 1.2ms 18.1MB 67ms 60ms nim 1.6.8
nim 1.nim 144ms 1.8ms 18.1MB 70ms 60ms nim/clang 1.6.8

lru

Input: 1000 1000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 2.nim 149ms 0.3ms 0.9MB 140ms 0ms nim/clang 1.6.8
nim 2.nim 160ms 0.9ms 0.7MB 150ms 0ms nim 1.6.8
odin 1.odin 190ms 1.5ms 1.8MB 180ms 0ms odin 2022
nim 1.nim timeout 0.0ms 0.0MB 0ms 0ms nim 1.6.8
nim 1.nim timeout 0.0ms 0.0MB 0ms 0ms nim/clang 1.6.8

Input: 1000 3000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 2.nim 440ms 1.1ms 0.9MB 430ms 0ms nim/clang 1.6.8
nim 2.nim 470ms 0.5ms 0.7MB 460ms 0ms nim 1.6.8
odin 1.odin 562ms 0.8ms 1.9MB 550ms 0ms odin 2022
nim 1.nim timeout 0.0ms 0.0MB 0ms 0ms nim 1.6.8
nim 1.nim timeout 0.0ms 0.0MB 0ms 0ms nim/clang 1.6.8

Input: 100 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 2.nim 65ms 0.4ms 0.9MB 53ms 0ms nim/clang 1.6.8
nim 2.nim 69ms 0.6ms 0.7MB 60ms 0ms nim 1.6.8
odin 1.odin 89ms 0.1ms 0.9MB 80ms 0ms odin 2022
nim 1.nim 442ms 1.7ms 0.6MB 430ms 0ms nim 1.6.8
nim 1.nim 486ms 3.6ms 1.0MB 470ms 0ms nim/clang 1.6.8

mandelbrot

Input: 5000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 1.nim 505ms 1.1ms 4.8MB 490ms 0ms nim/clang 1.6.8
nim 1.nim 879ms 3.2ms 4.5MB 870ms 0ms nim 1.6.8

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 1.nim 25ms 1.2ms 0.9MB 10ms 0ms nim/clang 1.6.8
nim 1.nim 39ms 1.1ms 0.7MB 30ms 0ms nim 1.6.8

merkletrees

Input: 17

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 1.nim 1563ms 17ms 34.9MB 1533ms 10ms nim 1.6.8
nim 1.nim 1583ms 3.0ms 34.7MB 1557ms 10ms nim/clang 1.6.8

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 1.nim 332ms 1.0ms 9.3MB 320ms 0ms nim 1.6.8
nim 1.nim 339ms 1.0ms 9.5MB 323ms 0ms nim/clang 1.6.8

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 2.nim 435ms 1.3ms 0.9MB 420ms 0ms nim 1.6.8
nim 2.nim 439ms 18ms 1.0MB 427ms 0ms nim/clang 1.6.8
odin 1.odin 2085ms 0.5ms 0.8MB 2070ms 0ms odin 2022

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 2.nim 47ms 1.1ms 0.9MB 40ms 0ms nim/clang 1.6.8
nim 2.nim 48ms 1.9ms 0.9MB 40ms 0ms nim 1.6.8
odin 1.odin 212ms 0.5ms 0.9MB 200ms 0ms odin 2022

nsieve

Input: 12

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 2.nim 661ms 0.8ms 6.7MB 640ms 0ms nim/clang 1.6.8
nim 2.nim 830ms 0.4ms 6.4MB 815ms 0ms nim 1.6.8
odin 2.odin 1024ms 0.8ms 6.3MB 1007ms 3ms odin 2022
nim 1.nim 1068ms 24ms 40.3MB 1047ms 10ms nim 1.6.8
odin 1.odin 1124ms 19ms 40.6MB 1097ms 10ms odin 2022
nim 1.nim 1155ms 61ms 41.2MB 1137ms 0ms nim/clang 1.6.8

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
odin 1.odin 128ms 0.1ms 11.3MB 113ms 0ms odin 2022
nim 1.nim 129ms 1.4ms 11.0MB 120ms 0ms nim 1.6.8
nim 1.nim 131ms 0.7ms 11.4MB 120ms 0ms nim/clang 1.6.8
nim 2.nim 151ms 0.4ms 3.2MB 140ms 0ms nim/clang 1.6.8
nim 2.nim 197ms 0.6ms 2.9MB 190ms 0ms nim 1.6.8
odin 2.odin 248ms 0.6ms 2.9MB 233ms 0ms odin 2022

pidigits

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 1.nim timeout 0.0ms 0.0MB 0ms 0ms nim 1.6.8
nim 1.nim timeout 0.0ms 0.0MB 0ms 0ms nim/clang 1.6.8

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 1.nim timeout 0.0ms 0.0MB 0ms 0ms nim 1.6.8
nim 1.nim timeout 0.0ms 0.0MB 0ms 0ms nim/clang 1.6.8

regex-redux

Input: 2500000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 1.nim 2476ms 24ms 167.8MB 2413ms 47ms nim/clang 1.6.8
nim 1.nim 2525ms 3.5ms 167.5MB 2460ms 47ms nim 1.6.8

Input: 250000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 1.nim 249ms 2.1ms 17.1MB 230ms 3ms nim/clang 1.6.8
nim 1.nim 255ms 2.0ms 16.6MB 237ms 0ms nim 1.6.8

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 1.nim 3433ms 0.9ms 1.8MB 3420ms 0ms nim/clang 1.6.8
nim 1.nim 3434ms 1.1ms 1.8MB 3420ms 0ms nim 1.6.8
odin 1.odin 3550ms 1.0ms 2.8MB 3540ms 0ms odin 2022

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 1.nim 860ms 0.0ms 0.9MB 847ms 0ms nim/clang 1.6.8
nim 1.nim 861ms 0.3ms 0.9MB 850ms 0ms nim 1.6.8
odin 1.odin 891ms 1.3ms 2.4MB 880ms 0ms odin 2022

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 1.nim 218ms 0.2ms 1.0MB 207ms 0ms nim/clang 1.6.8
nim 1.nim 218ms 0.6ms 2.2MB 210ms 0ms nim 1.6.8
odin 1.odin 227ms 0.7ms 1.8MB 217ms 0ms odin 2022