Julia VS Go 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.)

binarytrees

Input: 18

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
julia 4.jl 1131ms 0.4ms 243.3MB 1017ms 193ms julia 1.7.2
go 1.go 3208ms 18ms 45.7MB 4603ms 63ms go 1.18.2
go 1.go 4543ms 15ms 39.4MB 4520ms 7ms tinygo 0.23.0

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1.go 282ms 9.2ms 8.2MB 330ms 0ms go 1.18.2
julia 4.jl 331ms 3.0ms 225.4MB 277ms 130ms julia 1.7.2
go 1.go 360ms 1.9ms 6.3MB 350ms 0ms tinygo 0.23.0

fannkuch-redux

Input: 11

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 3-m.go 1435ms 21ms 4.9MB 2760ms 0ms go 1.18.2
julia 2-m.jl 1966ms 13ms 215.5MB 3390ms 130ms julia 1.7.2
go 3.go 2953ms 2.1ms 49.1MB 2937ms 0ms tinygo 0.23.0

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 3-m.go 146ms 1.6ms 4.9MB 220ms 0ms go 1.18.2
go 3.go 333ms 0.7ms 48.9MB 317ms 3ms tinygo 0.23.0
julia 2-m.jl 613ms 7.6ms 213.9MB 800ms 127ms julia 1.7.2

fasta

Input: 2500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 3-m.go 250ms 1.9ms 2.9MB 453ms 3ms go 1.18.2
julia 7-m.jl 659ms 7.7ms 287.8MB 917ms 150ms julia 1.7.2

Input: 250000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 3.go 32ms 0.5ms 2.9MB 37ms 0ms go 1.18.2
julia 7.jl 483ms 2.2ms 219.2MB 550ms 137ms julia 1.7.2

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1.go 0.7ms 0.1ms 0.0MB 0ms 0ms tinygo 0.23.0
go 1.go 2.9ms 0.3ms 2.8MB 0ms 0ms go 1.18.2
julia 1.jl 182ms 0.8ms 169.6MB 112ms 68ms julia 1.7.2

knucleotide

Input: 2500000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
julia 8.jl 1339ms 8.1ms 267.8MB 1633ms 153ms julia 1.7.2
go 7-m.go 1495ms 29ms 39.7MB 2737ms 40ms go 1.18.2

Input: 250000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 7-m.go 229ms 1.6ms 21.5MB 353ms 20ms go 1.18.2
julia 8.jl 910ms 1.5ms 256.3MB 997ms 153ms julia 1.7.2

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1.go 456ms 2.9ms 2.8MB 447ms 0ms go 1.18.2
julia 7.jl 757ms 1.2ms 221.8MB 700ms 133ms julia 1.7.2
go 1.go 844ms 2.5ms 2.0MB 830ms 0ms tinygo 0.23.0

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1.go 52ms 0.6ms 2.8MB 37ms 0ms go 1.18.2
go 1.go 87ms 1.1ms 2.0MB 80ms 0ms tinygo 0.23.0
julia 7.jl 446ms 1.1ms 222.5MB 377ms 147ms julia 1.7.2

nsieve

Input: 12

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
julia 1.jl 580ms 1.3ms 208.4MB 520ms 137ms julia 1.7.2
go 2.go 646ms 5.3ms 17.4MB 637ms 0ms tinygo 0.23.0
go 1.go 821ms 37ms 73.6MB 800ms 3ms go 1.18.2
go 1.go 864ms 3.5ms 42.3MB 847ms 3ms tinygo 0.23.0
go 2.go 929ms 3.5ms 20.1MB 923ms 0ms go 1.18.2

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1.go 120ms 1.0ms 21.9MB 103ms 3ms go 1.18.2
go 1.go 133ms 1.9ms 13.3MB 117ms 0ms tinygo 0.23.0
go 2.go 154ms 2.0ms 5.6MB 140ms 0ms tinygo 0.23.0
go 2.go 221ms 2.3ms 9.5MB 210ms 0ms go 1.18.2
julia 1.jl 378ms 1.5ms 205.3MB 323ms 133ms julia 1.7.2

pidigits

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
julia 3.jl 823ms 6.9ms 181.6MB 770ms 127ms julia 1.7.2
go 8.go 1377ms 4.0ms 8.6MB 1357ms 3ms go 1.18.2
julia 1.jl 1408ms 3.0ms 257.9MB 1313ms 170ms julia 1.7.2

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 8.go 329ms 1.8ms 8.5MB 310ms 0ms go 1.18.2
julia 3.jl 373ms 1.0ms 177.7MB 323ms 127ms julia 1.7.2
julia 1.jl 768ms 21ms 261.2MB 653ms 180ms julia 1.7.2

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
julia 2-m.jl 1402ms 3.5ms 197.3MB 2453ms 110ms julia 1.7.2
julia 3-m.jl 2112ms 3.7ms 210.9MB 3757ms 133ms julia 1.7.2
go 4-m.go 2513ms 5.8ms 5.3MB 4870ms 7ms go 1.18.2
go 1.go 4978ms 9.8ms 5.4MB 4963ms 0ms go 1.18.2
go 1.go timeout 0.0ms 0.0MB 0ms 0ms tinygo 0.23.0

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
julia 2-m.jl 613ms 3.3ms 196.8MB 867ms 150ms julia 1.7.2
go 4-m.go 636ms 1.3ms 3.3MB 1207ms 0ms go 1.18.2
julia 3-m.jl 833ms 3.1ms 210.7MB 1250ms 130ms julia 1.7.2
go 1.go 1246ms 1.8ms 3.3MB 1230ms 3ms go 1.18.2
go 1.go 2576ms 0.3ms 0.0MB 2567ms 0ms tinygo 0.23.0

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 4-m.go 168ms 1.2ms 2.8MB 300ms 0ms go 1.18.2
go 1.go 317ms 2.2ms 2.8MB 303ms 0ms go 1.18.2
julia 2-m.jl 413ms 1.1ms 197.9MB 523ms 103ms julia 1.7.2
julia 3.jl 517ms 4.6ms 214.2MB 627ms 130ms julia 1.7.2
go 1.go 647ms 0.4ms 2.0MB 640ms 0ms tinygo 0.23.0