Julia VS Nim benchmarks

Current benchmark data was generated on Sun Jan 29 2023, 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
nim 1.nim 1.2ms 0.2ms 1.0MB 0ms 0ms nim 1.6.10
nim 1.nim 2.0ms 0.4ms 1.3MB 0ms 0ms nim/clang 1.6.10
julia 1.jl 179ms 0.4ms 163.9MB 114ms 70ms julia/aot 1.8.5
julia 1.jl 194ms 1.8ms 171.2MB 132ms 76ms julia 1.8.5

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 2.nim 383ms 1.7ms 1.4MB 370ms 0ms nim 1.6.10
nim 2.nim 411ms 1.3ms 1.3MB 400ms 0ms nim/clang 1.6.10
julia 7.jl 549ms 0.1ms 168.6MB 507ms 120ms julia/aot 1.8.5
julia 7.jl 709ms 1.2ms 224.5MB 663ms 120ms julia 1.8.5

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 2.nim 40ms 0.1ms 1.3MB 30ms 0ms nim 1.6.10
nim 2.nim 43ms 0.1ms 1.3MB 33ms 0ms nim/clang 1.6.10
julia 7.jl 246ms 3.3ms 169.8MB 210ms 100ms julia/aot 1.8.5
julia 7.jl 395ms 6.8ms 223.7MB 333ms 133ms julia 1.8.5

nsieve

Input: 12

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
julia 1.jl 423ms 0.6ms 156.3MB 390ms 113ms julia/aot 1.8.5
julia 1.jl 528ms 2.4ms 203.3MB 487ms 113ms julia 1.8.5
nim 2.nim 593ms 1.9ms 6.3MB 580ms 0ms nim/clang 1.6.10
nim 1.nim 643ms 17ms 40.2MB 623ms 0ms nim 1.6.10
nim 1.nim 648ms 14ms 41.1MB 627ms 7ms nim/clang 1.6.10
nim 2.nim 669ms 1.1ms 6.0MB 657ms 0ms nim 1.6.10

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 1.nim 127ms 0.3ms 11.3MB 120ms 0ms nim/clang 1.6.10
nim 1.nim 129ms 3.0ms 11.1MB 117ms 0ms nim 1.6.10
nim 2.nim 138ms 0.6ms 3.3MB 130ms 0ms nim/clang 1.6.10
nim 2.nim 157ms 1.5ms 3.1MB 143ms 0ms nim 1.6.10
julia 1.jl 220ms 2.5ms 150.2MB 177ms 87ms julia/aot 1.8.5
julia 1.jl 326ms 1.7ms 195.1MB 293ms 113ms julia 1.8.5

binarytrees

Input: 18

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
julia 4.jl 1112ms 26ms 239.5MB 1023ms 163ms julia 1.8.5
nim 2.nim 1938ms 2.8ms 35.0MB 1920ms 3ms nim 1.6.10
nim 2.nim 2100ms 32ms 35.2MB 2080ms 3ms nim/clang 1.6.10

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 2.nim 186ms 2.3ms 5.5MB 170ms 0ms nim 1.6.10
nim 2.nim 199ms 5.2ms 5.7MB 183ms 0ms nim/clang 1.6.10
julia 4.jl 304ms 1.4ms 221.2MB 263ms 120ms julia 1.8.5

fannkuch-redux

Input: 11

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
julia 2-m.jl 1775ms 12ms 210.1MB 3120ms 127ms julia 1.8.5

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
julia 2-m.jl 527ms 5.9ms 209.8MB 693ms 117ms julia 1.8.5

fasta

Input: 2500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 2.nim 269ms 0.5ms 1.1MB 260ms 0ms nim 1.6.10
nim 2.nim 335ms 0.5ms 1.3MB 323ms 0ms nim/clang 1.6.10
julia 7-m.jl 630ms 2.1ms 291.8MB 860ms 147ms julia 1.8.5
nim 1.nim 771ms 2.9ms 1.1MB 663ms 90ms nim 1.6.10
nim 1.nim 796ms 0.7ms 1.3MB 693ms 87ms nim/clang 1.6.10

Input: 250000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 2.nim 29ms 0.9ms 1.0MB 20ms 0ms nim 1.6.10
nim 2.nim 36ms 0.4ms 1.3MB 30ms 0ms nim/clang 1.6.10
nim 1.nim 81ms 2.9ms 1.0MB 57ms 10ms nim 1.6.10
nim 1.nim 83ms 1.2ms 1.2MB 63ms 3ms nim/clang 1.6.10
julia 7-m.jl 451ms 0.5ms 226.0MB 563ms 117ms julia 1.8.5

knucleotide

Input: 2500000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
julia 8.jl 1118ms 9.1ms 273.3MB 1470ms 157ms julia 1.8.5

Input: 250000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
julia 8.jl 763ms 4.0ms 259.1MB 847ms 143ms julia 1.8.5

pidigits

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
julia 3.jl 791ms 4.6ms 176.9MB 760ms 103ms julia 1.8.5
julia 1.jl 1373ms 3.2ms 260.8MB 1303ms 147ms julia 1.8.5
nim 1.nim timeout 0.0ms 5.9MB 4987ms 0ms nim 1.6.10
nim 1.nim timeout 0.0ms 6.1MB 4983ms 3ms nim/clang 1.6.10

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
julia 3.jl 342ms 0.3ms 176.2MB 307ms 113ms julia 1.8.5
julia 1.jl 780ms 23ms 261.5MB 710ms 133ms julia 1.8.5
nim 1.nim timeout 0.0ms 5.9MB 4987ms 0ms nim 1.6.10
nim 1.nim timeout 0.0ms 6.1MB 4990ms 0ms nim/clang 1.6.10

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
julia 2-m.jl 1370ms 7.3ms 192.9MB 2410ms 103ms julia 1.8.5
julia 3-m.jl 2107ms 0.8ms 211.4MB 3787ms 123ms julia 1.8.5
nim 1.nim 4118ms 0.9ms 1.3MB 4110ms 0ms nim/clang 1.6.10
nim 1.nim 4119ms 0.1ms 1.3MB 4107ms 0ms nim 1.6.10

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
julia 2-m.jl 578ms 0.1ms 192.5MB 853ms 110ms julia 1.8.5
julia 3-m.jl 804ms 1.2ms 210.3MB 1233ms 120ms julia 1.8.5
nim 1.nim 1031ms 0.3ms 1.3MB 1020ms 0ms nim/clang 1.6.10
nim 1.nim 1032ms 1.1ms 1.3MB 1020ms 0ms nim 1.6.10

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 1.nim 259ms 0.1ms 1.3MB 250ms 0ms nim/clang 1.6.10
nim 1.nim 260ms 0.4ms 1.3MB 250ms 0ms nim 1.6.10
julia 2-m.jl 381ms 2.7ms 192.3MB 467ms 113ms julia 1.8.5
julia 3.jl 477ms 5.1ms 211.5MB 577ms 137ms julia 1.8.5