Codon VS Go benchmarks

Current benchmark data was generated on Sat Nov 16 2024, full log can be found HERE

CONTRIBUTIONS are WELCOME!

[x86_64][4 cores] AMD EPYC 7763 64-Core Processor (Model 1)

* -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
go 1.go 0.7ms 0.1ms 0.1MB 0ms 0ms tinygo 0.34.0
go 1.go 1.4ms 0.1ms 3.4MB 0ms 0ms go 1.23.3
codon 1.py 4.6ms 0.6ms 7.4MB 0ms 0ms codon 0.17.0

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1.go 348ms 4.4ms 0.1MB 337ms 0ms tinygo 0.34.0
go 1.go 362ms 2.1ms 3.4MB 350ms 0ms go 1.23.3
codon 1.py 1302ms 15ms 7.9MB 1287ms 0ms codon 0.17.0

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1.go 37ms 1.4ms 2.1MB 30ms 0ms tinygo 0.34.0
go 1.go 40ms 0.4ms 3.4MB 30ms 0ms go 1.23.3
codon 1.py 136ms 1.4ms 7.9MB 130ms 0ms codon 0.17.0

nsieve

Input: 12

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1.go 302ms 4.7ms 71.7MB 287ms 3ms go 1.23.3
go 1.go 361ms 8.8ms 42.8MB 347ms 0ms tinygo 0.34.0
codon 1.py 374ms 2.0ms 46.6MB 357ms 0ms codon 0.17.0
go 2.go 434ms 4.2ms 17.3MB 423ms 0ms tinygo 0.34.0
go 2.go 779ms 0.5ms 21.8MB 763ms 7ms go 1.23.3
codon 2.py 856ms 4.9ms 99.8MB 833ms 20ms codon 0.17.0

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1.go 60ms 0.6ms 21.6MB 47ms 0ms go 1.23.3
go 1.go 65ms 2.5ms 13.7MB 53ms 0ms tinygo 0.34.0
codon 1.py 73ms 2.7ms 17.3MB 60ms 0ms codon 0.17.0
go 2.go 107ms 1.7ms 5.6MB 97ms 0ms tinygo 0.34.0
codon 2.py 197ms 1.6ms 25.6MB 187ms 3ms codon 0.17.0
go 2.go 197ms 2.3ms 7.6MB 180ms 3ms go 1.23.3