Current benchmark data was generated on Mon Dec 30 2024, full log can be found HERE
CONTRIBUTIONS are WELCOME!
* -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.)
lang | code | time | stddev | peak-mem mem | time(user) | time(sys) | compiler compiler/runtime |
---|---|---|---|---|---|---|---|
crystal | 1.cr | 1344ms | 19ms | 64.2MB | 1317ms | 10ms | crystal 1.14.0 |
ruby | 1-m.rb | 4559ms | 99ms | 826.4MB | 6440ms | 460ms | truffleruby 24.1.1 |
ruby | 1.rb | 4582ms | 104ms | 110.1MB | 4487ms | 73ms | ruby/yjit 3.4.1 |
ruby | 1.rb | timeout | 0.0ms | 70.5MB | 4947ms | 37ms | ruby 3.4.1 |
lang | code | time | stddev | peak-mem mem | time(user) | time(sys) | compiler compiler/runtime |
---|---|---|---|---|---|---|---|
crystal | 1.cr | 105ms | 3.9ms | 11.1MB | 93ms | 0ms | crystal 1.14.0 |
ruby | 1.rb | 478ms | 0.9ms | 20.4MB | 450ms | 20ms | ruby/yjit 3.4.1 |
ruby | 1-m.rb | 600ms | 8.2ms | 437.8MB | 1227ms | 167ms | truffleruby 24.1.1 |
ruby | 1.rb | 940ms | 8.6ms | 19.6MB | 913ms | 10ms | ruby 3.4.1 |
lang | code | time | stddev | peak-mem mem | time(user) | time(sys) | compiler compiler/runtime |
---|---|---|---|---|---|---|---|
crystal | 1.cr | 1293ms | 57ms | 20.1MB | 1223ms | 53ms | crystal 1.14.0 |
ruby | 1.rb | 1426ms | 6.5ms | 63.9MB | 1353ms | 57ms | ruby/yjit 3.4.1 |
ruby | 1.rb | 1877ms | 44ms | 63.1MB | 1780ms | 83ms | ruby 3.4.1 |
ruby | 1.rb | timeout | 0.0ms | 725.4MB | 4653ms | 1547ms | truffleruby 24.1.1 |
lang | code | time | stddev | peak-mem mem | time(user) | time(sys) | compiler compiler/runtime |
---|---|---|---|---|---|---|---|
crystal | 1.cr | 74ms | 0.3ms | 7.5MB | 47ms | 7ms | crystal 1.14.0 |
ruby | 1.rb | 155ms | 1.0ms | 25.8MB | 123ms | 17ms | ruby/yjit 3.4.1 |
ruby | 1.rb | 178ms | 2.1ms | 25.1MB | 143ms | 17ms | ruby 3.4.1 |
ruby | 1.rb | timeout | 0.0ms | 741.3MB | 4710ms | 1493ms | truffleruby 24.1.1 |
lang | code | time | stddev | peak-mem mem | time(user) | time(sys) | compiler compiler/runtime |
---|---|---|---|---|---|---|---|
crystal | 2.cr | 543ms | 3.5ms | 3.4MB | 413ms | 110ms | crystal 1.14.0 |
crystal | 1.cr | 731ms | 4.9ms | 14.7MB | 607ms | 107ms | crystal 1.14.0 |
ruby | 6.rb | 2042ms | 9.8ms | 23.1MB | 2013ms | 10ms | ruby/yjit 3.4.1 |
ruby | 6-m.rb | 2044ms | 111ms | 402.5MB | 5243ms | 363ms | truffleruby 24.1.1 |
ruby | 6.rb | 3669ms | 34ms | 22.5MB | 3643ms | 10ms | ruby 3.4.1 |
lang | code | time | stddev | peak-mem mem | time(user) | time(sys) | compiler compiler/runtime |
---|---|---|---|---|---|---|---|
crystal | 2.cr | 58ms | 1.3ms | 3.4MB | 33ms | 13ms | crystal 1.14.0 |
crystal | 1.cr | 77ms | 0.9ms | 4.5MB | 50ms | 13ms | crystal 1.14.0 |
ruby | 6.rb | 256ms | 0.8ms | 15.2MB | 230ms | 13ms | ruby/yjit 3.4.1 |
ruby | 6.rb | 419ms | 6.7ms | 14.5MB | 400ms | 7ms | ruby 3.4.1 |
ruby | 6-m.rb | 819ms | 5.3ms | 387.6MB | 1987ms | 200ms | truffleruby 24.1.1 |
lang | code | time | stddev | peak-mem mem | time(user) | time(sys) | compiler compiler/runtime |
---|---|---|---|---|---|---|---|
crystal | 1.cr | 2.0ms | 0.2ms | 3.0MB | 0ms | 0ms | crystal 1.14.0 |
ruby | 1.rb | 39ms | 0.5ms | 165.1MB | 12ms | 32ms | truffleruby 24.1.1 |
ruby | 1.rb | 51ms | 1.2ms | 13.1MB | 38ms | 2ms | ruby/yjit 3.4.1 |
ruby | 1.rb | 53ms | 0.7ms | 12.9MB | 40ms | 4ms | ruby 3.4.1 |
lang | code | time | stddev | peak-mem mem | time(user) | time(sys) | compiler compiler/runtime |
---|---|---|---|---|---|---|---|
crystal | 0-unsafe.cr | 36ms | 1.6ms | 3.1MB | 27ms | 0ms | crystal 1.14.0 |
crystal | 1.cr | 65ms | 2.3ms | 3.1MB | 53ms | 0ms | crystal 1.14.0 |
ruby | 1.rb | 330ms | 1.9ms | 13.6MB | 307ms | 10ms | ruby/yjit 3.4.1 |
ruby | 1.rb | 537ms | 2.5ms | 13.0MB | 523ms | 3ms | ruby 3.4.1 |
ruby | 1-m.rb | 717ms | 35ms | 391.9MB | 1247ms | 167ms | truffleruby 24.1.1 |
lang | code | time | stddev | peak-mem mem | time(user) | time(sys) | compiler compiler/runtime |
---|---|---|---|---|---|---|---|
crystal | 0-unsafe.cr | 99ms | 1.9ms | 3.1MB | 90ms | 0ms | crystal 1.14.0 |
crystal | 1.cr | 190ms | 11ms | 3.1MB | 180ms | 0ms | crystal 1.14.0 |
ruby | 1.rb | 882ms | 5.3ms | 13.6MB | 853ms | 17ms | ruby/yjit 3.4.1 |
ruby | 1-m.rb | 1201ms | 51ms | 421.0MB | 1657ms | 177ms | truffleruby 24.1.1 |
ruby | 1.rb | 1493ms | 8.9ms | 12.9MB | 1473ms | 7ms | ruby 3.4.1 |
lang | code | time | stddev | peak-mem mem | time(user) | time(sys) | compiler compiler/runtime |
---|---|---|---|---|---|---|---|
crystal | 0-unsafe.cr | 18ms | 1.3ms | 3.0MB | 10ms | 0ms | crystal 1.14.0 |
crystal | 1.cr | 30ms | 1.6ms | 3.0MB | 20ms | 0ms | crystal 1.14.0 |
ruby | 1.rb | 196ms | 4.3ms | 13.5MB | 177ms | 3ms | ruby/yjit 3.4.1 |
ruby | 1.rb | 292ms | 5.8ms | 12.9MB | 273ms | 0ms | ruby 3.4.1 |
ruby | 1-m.rb | 515ms | 25ms | 371.7MB | 1013ms | 110ms | truffleruby 24.1.1 |
lang | code | time | stddev | peak-mem mem | time(user) | time(sys) | compiler compiler/runtime |
---|---|---|---|---|---|---|---|
crystal | 1.cr | 794ms | 8.6ms | 81.7MB | 767ms | 13ms | crystal 1.14.0 |
ruby | 1-m.rb | 4577ms | 143ms | 578.9MB | 11673ms | 380ms | truffleruby 24.1.1 |
ruby | 1.rb | timeout | 0.0ms | 94.0MB | 4940ms | 40ms | ruby 3.4.1 |
ruby | 1.rb | timeout | 0.0ms | 97.5MB | 4920ms | 63ms | ruby/yjit 3.4.1 |
lang | code | time | stddev | peak-mem mem | time(user) | time(sys) | compiler compiler/runtime |
---|---|---|---|---|---|---|---|
crystal | 1.cr | 164ms | 7.9ms | 22.3MB | 150ms | 0ms | crystal 1.14.0 |
ruby | 1-m.rb | 2187ms | 101ms | 525.8MB | 5677ms | 230ms | truffleruby 24.1.1 |
ruby | 1.rb | 3238ms | 7.5ms | 38.4MB | 3203ms | 17ms | ruby/yjit 3.4.1 |
ruby | 1.rb | 4306ms | 3.3ms | 37.8MB | 4267ms | 23ms | ruby 3.4.1 |
lang | code | time | stddev | peak-mem mem | time(user) | time(sys) | compiler compiler/runtime |
---|---|---|---|---|---|---|---|
crystal | 2.cr | 341ms | 1.2ms | 3.4MB | 330ms | 0ms | crystal 1.14.0 |
crystal | 1.cr | 343ms | 3.1ms | 3.4MB | 333ms | 0ms | crystal 1.14.0 |
ruby | 2.rb | 835ms | 6.7ms | 327.0MB | 1073ms | 117ms | truffleruby 24.1.1 |
ruby | 2.rb | timeout | 0.0ms | 12.9MB | 4980ms | 3ms | ruby 3.4.1 |
ruby | 2.rb | timeout | 0.0ms | 13.6MB | 4980ms | 3ms | ruby/yjit 3.4.1 |
lang | code | time | stddev | peak-mem mem | time(user) | time(sys) | compiler compiler/runtime |
---|---|---|---|---|---|---|---|
crystal | 2.cr | 37ms | 0.3ms | 3.4MB | 30ms | 0ms | crystal 1.14.0 |
crystal | 1.cr | 37ms | 0.7ms | 3.4MB | 30ms | 0ms | crystal 1.14.0 |
ruby | 2-m.rb | 322ms | 4.0ms | 333.7MB | 590ms | 100ms | truffleruby 24.1.1 |
ruby | 2.rb | 1053ms | 5.8ms | 13.6MB | 1037ms | 3ms | ruby/yjit 3.4.1 |
ruby | 2.rb | 2816ms | 74ms | 12.9MB | 2800ms | 3ms | ruby 3.4.1 |
lang | code | time | stddev | peak-mem mem | time(user) | time(sys) | compiler compiler/runtime |
---|---|---|---|---|---|---|---|
crystal | 2.cr | 349ms | 5.0ms | 8.4MB | 333ms | 0ms | crystal 1.14.0 |
crystal | 1.cr | 374ms | 7.6ms | 62.7MB | 360ms | 0ms | crystal 1.14.0 |
ruby | 1.rb | timeout | 0.0ms | 325.4MB | 4850ms | 133ms | ruby 3.4.1 |
ruby | 1.rb | timeout | 0.0ms | 327.1MB | 4843ms | 133ms | ruby/yjit 3.4.1 |
ruby | 1.rb | timeout | 0.0ms | 762.9MB | 5063ms | 167ms | truffleruby 24.1.1 |
lang | code | time | stddev | peak-mem mem | time(user) | time(sys) | compiler compiler/runtime |
---|---|---|---|---|---|---|---|
crystal | 1.cr | 77ms | 0.7ms | 13.3MB | 67ms | 0ms | crystal 1.14.0 |
crystal | 2.cr | 86ms | 1.2ms | 4.6MB | 77ms | 0ms | crystal 1.14.0 |
ruby | 1-m.rb | 1740ms | 47ms | 486.8MB | 2463ms | 153ms | truffleruby 24.1.1 |
ruby | 1.rb | 3441ms | 129ms | 131.9MB | 3357ms | 70ms | ruby/yjit 3.4.1 |
ruby | 1.rb | 4493ms | 12ms | 131.1MB | 4407ms | 73ms | ruby 3.4.1 |
lang | code | time | stddev | peak-mem mem | time(user) | time(sys) | compiler compiler/runtime |
---|---|---|---|---|---|---|---|
crystal | 1.cr | 2009ms | 29ms | 6.5MB | 1970ms | 23ms | crystal 1.14.0 |
ruby | 1.rb | timeout | 0.0ms | 46.5MB | 4910ms | 77ms | ruby 3.4.1 |
ruby | 1.rb | timeout | 0.0ms | 47.2MB | 4937ms | 47ms | ruby/yjit 3.4.1 |
ruby | 1.rb | timeout | 0.0ms | 467.9MB | 13150ms | 400ms | truffleruby 24.1.1 |
lang | code | time | stddev | peak-mem mem | time(user) | time(sys) | compiler compiler/runtime |
---|---|---|---|---|---|---|---|
crystal | 1.cr | 446ms | 7.5ms | 5.3MB | 430ms | 7ms | crystal 1.14.0 |
ruby | 1.rb | 1638ms | 12ms | 46.1MB | 1587ms | 37ms | ruby 3.4.1 |
ruby | 1.rb | 1713ms | 72ms | 127.8MB | 1603ms | 93ms | ruby/yjit 3.4.1 |
ruby | 1-m.rb | 1790ms | 18ms | 406.6MB | 4713ms | 200ms | truffleruby 24.1.1 |
lang | code | time | stddev | peak-mem mem | time(user) | time(sys) | compiler compiler/runtime |
---|---|---|---|---|---|---|---|
crystal | 1.cr | 3905ms | 37ms | 4.6MB | 3897ms | 0ms | crystal 1.14.0 |
ruby | 4.rb | timeout | 0.0ms | 13.0MB | 4980ms | 3ms | ruby 3.4.1 |
ruby | 4.rb | timeout | 0.0ms | 13.6MB | 4980ms | 7ms | ruby/yjit 3.4.1 |
ruby | 4.rb | timeout | 0.0ms | 467.6MB | 5170ms | 207ms | truffleruby 24.1.1 |
lang | code | time | stddev | peak-mem mem | time(user) | time(sys) | compiler compiler/runtime |
---|---|---|---|---|---|---|---|
crystal | 1.cr | 981ms | 4.6ms | 4.5MB | 967ms | 0ms | crystal 1.14.0 |
ruby | 4.rb | 4492ms | 21ms | 467.4MB | 4820ms | 187ms | truffleruby 24.1.1 |
ruby | 4.rb | timeout | 0.0ms | 13.0MB | 4980ms | 3ms | ruby 3.4.1 |
ruby | 4.rb | timeout | 0.0ms | 13.6MB | 4973ms | 13ms | ruby/yjit 3.4.1 |
lang | code | time | stddev | peak-mem mem | time(user) | time(sys) | compiler compiler/runtime |
---|---|---|---|---|---|---|---|
crystal | 1.cr | 247ms | 2.1ms | 4.0MB | 233ms | 0ms | crystal 1.14.0 |
ruby | 4.rb | 1289ms | 48ms | 390.0MB | 1640ms | 137ms | truffleruby 24.1.1 |
ruby | 4.rb | timeout | 0.0ms | 13.0MB | 4983ms | 7ms | ruby 3.4.1 |
ruby | 4.rb | timeout | 0.0ms | 13.9MB | 4980ms | 3ms | ruby/yjit 3.4.1 |