Crystal VS Odin 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
crystal 1.cr 1614ms 6.4ms 64.4MB 1927ms 20ms crystal 1.4.1

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
crystal 1.cr 138ms 0.3ms 11.0MB 143ms 0ms crystal 1.4.1

coro-prime-sieve

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
crystal 1.cr 1979ms 40ms 20.5MB 1940ms 23ms crystal 1.4.1

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
crystal 1.cr 111ms 1.9ms 7.6MB 97ms 3ms crystal 1.4.1

edigits

Input: 250001

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
crystal 1.cr 84ms 3.2ms 9.3MB 67ms 3ms crystal 1.4.1

Input: 100000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
crystal 1.cr 31ms 0.3ms 7.0MB 20ms 0ms crystal 1.4.1

fannkuch-redux

Input: 11

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
crystal 1.cr 3816ms 3.5ms 3.0MB 3800ms 0ms crystal 1.4.1

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
crystal 1.cr 315ms 1.6ms 3.0MB 303ms 0ms crystal 1.4.1

fasta

Input: 2500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
crystal 2.cr 842ms 6.9ms 3.6MB 683ms 143ms crystal 1.4.1
crystal 1.cr 1030ms 0.5ms 14.8MB 857ms 160ms crystal 1.4.1

Input: 250000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
crystal 2.cr 88ms 0.7ms 3.5MB 70ms 10ms crystal 1.4.1
crystal 1.cr 109ms 2.2ms 4.6MB 83ms 13ms crystal 1.4.1

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
odin 1.odin 2.1ms 1.0ms 0.9MB 0ms 0ms odin 2022
crystal 1.cr 3.0ms 0.6ms 3.0MB 0ms 0ms crystal 1.4.1

http-server

Input: 3000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
crystal 1.cr 2833ms 1054ms 131.4MB 303ms 290ms crystal 1.4.1

Input: 500

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
crystal 1.cr 1242ms 112ms 32.7MB 20ms 63ms crystal 1.4.1

lru

Input: 1000 1000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
crystal 0-unsafe.cr 63ms 2.1ms 5.0MB 50ms 0ms crystal 1.4.1
crystal 1.cr 108ms 1.8ms 3.0MB 100ms 0ms crystal 1.4.1
odin 1.odin 176ms 1.5ms 1.8MB 160ms 0ms odin 2022

Input: 1000 3000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
crystal 0-unsafe.cr 175ms 1.0ms 3.0MB 163ms 0ms crystal 1.4.1
crystal 1.cr 313ms 0.4ms 3.1MB 300ms 0ms crystal 1.4.1
odin 1.odin 517ms 3.6ms 1.8MB 503ms 0ms odin 2022

Input: 100 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
crystal 0-unsafe.cr 32ms 2.1ms 3.1MB 20ms 0ms crystal 1.4.1
crystal 1.cr 55ms 1.2ms 5.1MB 47ms 0ms crystal 1.4.1
odin 1.odin 82ms 0.2ms 0.8MB 70ms 0ms odin 2022

mandelbrot

Input: 5000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
crystal 1.cr 996ms 1.0ms 9.6MB 980ms 0ms crystal 1.4.1
odin 1.odin 1615ms 0.8ms 4.7MB 1603ms 0ms odin 2022

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
crystal 1.cr 46ms 0.6ms 5.0MB 33ms 0ms crystal 1.4.1
odin 1.odin 69ms 0.3ms 0.8MB 60ms 0ms odin 2022

merkletrees

Input: 17

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
crystal 1.cr 1119ms 48ms 66.2MB 1287ms 13ms crystal 1.4.1

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
crystal 1.cr 226ms 4.8ms 19.4MB 250ms 3ms crystal 1.4.1

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
crystal 1.cr 510ms 0.8ms 3.1MB 500ms 0ms crystal 1.4.1
crystal 2.cr 540ms 0.7ms 3.1MB 530ms 0ms crystal 1.4.1
odin 1.odin 2543ms 1.4ms 0.8MB 2530ms 0ms odin 2022

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
crystal 1.cr 55ms 1.3ms 3.0MB 43ms 0ms crystal 1.4.1
crystal 2.cr 59ms 2.2ms 5.1MB 47ms 0ms crystal 1.4.1
odin 1.odin 256ms 0.3ms 0.8MB 250ms 0ms odin 2022

nsieve

Input: 12

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
crystal 2.cr 466ms 1.2ms 10.1MB 450ms 0ms crystal 1.4.1
odin 1.odin 819ms 17ms 40.6MB 797ms 7ms odin 2022
crystal 1.cr 878ms 62ms 44.5MB 853ms 10ms crystal 1.4.1
odin 2.odin 1251ms 15ms 6.4MB 1240ms 0ms odin 2022

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
crystal 2.cr 108ms 1.9ms 4.4MB 100ms 0ms crystal 1.4.1
odin 1.odin 122ms 0.2ms 11.4MB 110ms 0ms odin 2022
crystal 1.cr 147ms 1.5ms 14.8MB 133ms 0ms crystal 1.4.1
odin 2.odin 303ms 3.5ms 2.9MB 293ms 0ms odin 2022

pidigits

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
crystal 1.cr 2771ms 83ms 6.8MB 3037ms 267ms crystal 1.4.1

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
crystal 1.cr 653ms 3.5ms 5.4MB 680ms 73ms crystal 1.4.1

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
odin 1.odin 4493ms 1.5ms 2.9MB 4480ms 0ms odin 2022
crystal 1.cr timeout 0.0ms 0.0MB 0ms 0ms crystal 1.4.1

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
odin 1.odin 1128ms 0.4ms 2.4MB 1120ms 0ms odin 2022
crystal 1.cr 1507ms 2.2ms 5.6MB 1497ms 0ms crystal 1.4.1

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
odin 1.odin 285ms 0.2ms 1.9MB 273ms 0ms odin 2022
crystal 1.cr 381ms 1.5ms 3.8MB 367ms 0ms crystal 1.4.1