Crystal VS Codon 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.)

binarytrees

Input: 18

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
crystal 1.cr 1798ms 15ms 64.1MB 1773ms 10ms crystal 1.7.2

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
crystal 1.cr 142ms 4.4ms 10.9MB 127ms 0ms crystal 1.7.2

coro-prime-sieve

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
crystal 1.cr 1723ms 16ms 20.3MB 1677ms 30ms crystal 1.7.2

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
crystal 1.cr 97ms 2.1ms 7.3MB 80ms 3ms crystal 1.7.2

edigits

Input: 250001

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
crystal 1.cr 82ms 3.6ms 6.3MB 60ms 3ms crystal 1.7.2

Input: 100000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
crystal 1.cr 30ms 0.2ms 5.1MB 17ms 0ms crystal 1.7.2

fannkuch-redux

Input: 11

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
crystal 1.cr 3778ms 3.4ms 3.0MB 3763ms 0ms crystal 1.7.2

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
crystal 1.cr 311ms 0.6ms 3.0MB 300ms 0ms crystal 1.7.2

fasta

Input: 2500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
crystal 2.cr 830ms 0.4ms 3.3MB 717ms 100ms crystal 1.7.2
crystal 1.cr 1067ms 0.1ms 14.6MB 943ms 103ms crystal 1.7.2

Input: 250000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
crystal 2.cr 87ms 0.9ms 3.2MB 67ms 7ms crystal 1.7.2
crystal 1.cr 111ms 0.9ms 4.5MB 83ms 10ms crystal 1.7.2

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
crystal 1.cr 2.2ms 0.7ms 2.9MB 0ms 0ms crystal 1.7.2
codon 1.py 4.1ms 0.8ms 5.3MB 0ms 0ms codon 0.15.4

http-server

Input: 3000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
crystal 1.cr 3823ms 535ms 207.8MB 477ms 303ms crystal 1.7.2

Input: 500

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
crystal 1.cr 1214ms 105ms 51.9MB 63ms 43ms crystal 1.7.2

lru

Input: 1000 1000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
crystal 0-unsafe.cr 55ms 1.1ms 3.0MB 43ms 0ms crystal 1.7.2
crystal 1.cr 96ms 0.2ms 3.0MB 90ms 0ms crystal 1.7.2

Input: 1000 3000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
crystal 0-unsafe.cr 160ms 1.1ms 3.0MB 150ms 0ms crystal 1.7.2
crystal 1.cr 282ms 0.2ms 3.0MB 270ms 0ms crystal 1.7.2

Input: 100 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
crystal 0-unsafe.cr 27ms 0.3ms 2.9MB 20ms 0ms crystal 1.7.2
crystal 1.cr 48ms 0.4ms 3.0MB 40ms 0ms crystal 1.7.2

mandelbrot

Input: 5000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
crystal 1.cr 490ms 1.8ms 9.5MB 480ms 0ms crystal 1.7.2

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
crystal 1.cr 26ms 0.1ms 6.8MB 17ms 0ms crystal 1.7.2

merkletrees

Input: 17

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
crystal 1.cr 1288ms 25ms 64.1MB 1253ms 20ms crystal 1.7.2

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
crystal 1.cr 221ms 5.3ms 22.4MB 207ms 0ms crystal 1.7.2

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
crystal 1.cr 514ms 1.1ms 3.0MB 500ms 0ms crystal 1.7.2
crystal 2.cr 535ms 0.2ms 2.9MB 530ms 0ms crystal 1.7.2
codon 1.py 1947ms 23ms 5.3MB 1933ms 0ms codon 0.15.4

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
crystal 1.cr 54ms 0.2ms 2.9MB 43ms 0ms crystal 1.7.2
crystal 2.cr 56ms 0.1ms 2.9MB 43ms 0ms crystal 1.7.2
codon 1.py 197ms 0.8ms 5.3MB 187ms 0ms codon 0.15.4

nsieve

Input: 12

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
crystal 2.cr 462ms 0.6ms 7.8MB 450ms 0ms crystal 1.7.2
crystal 1.cr 780ms 7.6ms 42.0MB 760ms 0ms crystal 1.7.2
codon 1.py 873ms 79ms 48.3MB 850ms 3ms codon 0.15.4
codon 2.py 1003ms 24ms 106.7MB 977ms 13ms codon 0.15.4

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
crystal 2.cr 105ms 0.1ms 4.1MB 97ms 0ms crystal 1.7.2
crystal 1.cr 133ms 0.7ms 12.9MB 120ms 0ms crystal 1.7.2
codon 1.py 150ms 0.2ms 15.1MB 133ms 3ms codon 0.15.4
codon 2.py 185ms 3.8ms 23.9MB 173ms 3ms codon 0.15.4

pidigits

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
crystal 1.cr 2575ms 99ms 7.3MB 2547ms 10ms crystal 1.7.2

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
crystal 1.cr 588ms 11ms 5.1MB 570ms 3ms crystal 1.7.2

regex-redux

Input: 2500000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
crystal 1.cr 2371ms 12ms 174.0MB 2317ms 37ms crystal 1.7.2

Input: 250000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
crystal 1.cr 249ms 1.9ms 32.1MB 227ms 7ms crystal 1.7.2

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
crystal 1.cr timeout 0.0ms 4.1MB 4987ms 0ms crystal 1.7.2

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
crystal 1.cr 1559ms 1.5ms 3.8MB 1543ms 0ms crystal 1.7.2

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
crystal 1.cr 397ms 2.4ms 3.8MB 390ms 0ms crystal 1.7.2