Ruby VS Dart 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
dart 1.dart 1005ms 0.9ms 87.6MB 970ms 37ms dart/exe 2.19.0
ruby 1.rb timeout 0.0ms 72.6MB 4967ms 17ms ruby 3.2.0
ruby 1.rb timeout 0.0ms 115.6MB 4940ms 40ms ruby/yjit 3.2.0
ruby 1.rb timeout 0.0ms 757.2MB 7747ms 373ms truffleruby 22.3.1

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
dart 1.dart 103ms 2.9ms 47.2MB 70ms 20ms dart/exe 2.19.0
ruby 1.rb 535ms 0.7ms 40.7MB 513ms 7ms ruby/yjit 3.2.0
ruby 1-m.rb 965ms 36ms 426.1MB 1560ms 130ms truffleruby 22.3.1
ruby 1.rb 983ms 12ms 40.3MB 947ms 17ms ruby 3.2.0

coro-prime-sieve

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ruby 1.rb 3078ms 7.8ms 82.8MB 2993ms 70ms ruby/yjit 3.2.0
ruby 1.rb 3445ms 2.1ms 82.2MB 3363ms 60ms ruby 3.2.0
dart 1.dart timeout 0.0ms 24.9MB 4927ms 50ms dart/exe 2.19.0
ruby 1.rb timeout 0.0ms 1060.0MB 4270ms 1283ms truffleruby 22.3.1

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ruby 1.rb 219ms 4.0ms 44.8MB 187ms 17ms ruby/yjit 3.2.0
ruby 1.rb 232ms 1.7ms 44.5MB 197ms 17ms ruby 3.2.0
dart 1.dart 546ms 7.7ms 18.2MB 503ms 23ms dart/exe 2.19.0
ruby 1.rb timeout 0.0ms 1052.7MB 4280ms 1217ms truffleruby 22.3.1

fasta

Input: 2500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
dart 1.dart 561ms 2.6ms 15.1MB 543ms 3ms dart/exe 2.19.0
ruby 6.rb 2344ms 2.0ms 43.6MB 2310ms 17ms ruby/yjit 3.2.0
ruby 6-m.rb 2496ms 56ms 375.1MB 4513ms 257ms truffleruby 22.3.1
ruby 6.rb 4310ms 33ms 43.1MB 4283ms 17ms ruby 3.2.0

Input: 250000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
dart 1.dart 67ms 1.1ms 14.7MB 50ms 0ms dart/exe 2.19.0
ruby 6.rb 305ms 1.2ms 34.8MB 280ms 10ms ruby/yjit 3.2.0
ruby 6.rb 497ms 2.8ms 34.4MB 477ms 3ms ruby 3.2.0
ruby 6-m.rb 801ms 16ms 318.7MB 1377ms 97ms truffleruby 22.3.1

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
dart 1.dart 7.3ms 0.7ms 13.8MB 0ms 0ms dart/exe 2.19.0
ruby 1.rb 41ms 2.6ms 156.3MB 16ms 26ms truffleruby 22.3.1
ruby 1.rb 72ms 0.3ms 32.5MB 46ms 14ms ruby/yjit 3.2.0
ruby 1.rb 72ms 0.5ms 32.1MB 48ms 12ms ruby 3.2.0

json-serde

Input: sample 5000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
dart 1.dart 263ms 0.4ms 57.2MB 240ms 10ms dart/exe 2.19.0
ruby 1.rb 434ms 0.6ms 50.4MB 403ms 17ms ruby/yjit 3.2.0
ruby 1.rb 436ms 4.9ms 51.8MB 400ms 23ms ruby 3.2.0
ruby 1.rb timeout 0.0ms 454.6MB 9203ms 197ms truffleruby 22.3.1

Input: canada 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
dart 1.dart 2152ms 27ms 301.5MB 2190ms 103ms dart/exe 2.19.0
ruby 1.rb 3971ms 7.2ms 173.2MB 3883ms 70ms ruby 3.2.0
ruby 1.rb 3992ms 35ms 175.0MB 3903ms 67ms ruby/yjit 3.2.0
ruby 1.rb timeout 0.0ms 435.5MB 9273ms 180ms truffleruby 22.3.1

lru

Input: 1000 1000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
dart 2.dart 252ms 1.3ms 16.4MB 233ms 3ms dart/exe 2.19.0
ruby 1.rb 445ms 3.9ms 33.0MB 423ms 7ms ruby/yjit 3.2.0
ruby 1.rb 602ms 5.2ms 32.4MB 573ms 13ms ruby 3.2.0
ruby 1-m.rb 753ms 19ms 323.9MB 1107ms 97ms truffleruby 22.3.1
dart 1.dart 1464ms 2.0ms 14.7MB 1443ms 0ms dart/exe 2.19.0

Input: 1000 3000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
dart 2.dart 728ms 3.8ms 16.5MB 707ms 3ms dart/exe 2.19.0
ruby 1.rb 1174ms 2.2ms 32.9MB 1153ms 10ms ruby/yjit 3.2.0
ruby 1.rb 1398ms 49ms 364.8MB 1797ms 137ms truffleruby 22.3.1
ruby 1.rb 1668ms 32ms 32.4MB 1640ms 13ms ruby 3.2.0
dart 1.dart 4368ms 4.4ms 14.7MB 4347ms 3ms dart/exe 2.19.0

Input: 100 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
dart 2.dart 117ms 1.8ms 14.2MB 103ms 0ms dart/exe 2.19.0
dart 1.dart 212ms 0.7ms 15.0MB 200ms 0ms dart/exe 2.19.0
ruby 1.rb 258ms 2.3ms 32.9MB 233ms 10ms ruby/yjit 3.2.0
ruby 1.rb 335ms 5.5ms 32.3MB 310ms 7ms ruby 3.2.0
ruby 1-m.rb 565ms 51ms 309.0MB 860ms 87ms truffleruby 22.3.1

merkletrees

Input: 17

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
dart 1.dart 497ms 2.6ms 71.0MB 467ms 33ms dart/exe 2.19.0
ruby 1.rb timeout 0.0ms 96.5MB 4937ms 43ms ruby 3.2.0
ruby 1.rb timeout 0.0ms 97.0MB 4937ms 50ms ruby/yjit 3.2.0
ruby 1.rb timeout 0.0ms 570.5MB 9237ms 210ms truffleruby 22.3.1

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
dart 1.dart 124ms 0.5ms 48.7MB 103ms 7ms dart/exe 2.19.0
ruby 1-m.rb 3223ms 39ms 596.5MB 5953ms 190ms truffleruby 22.3.1
ruby 1.rb 4080ms 11ms 53.7MB 4047ms 17ms ruby/yjit 3.2.0
ruby 1.rb 4848ms 44ms 52.7MB 4810ms 23ms ruby 3.2.0

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
dart 3.dart 530ms 5.0ms 13.5MB 517ms 0ms dart/exe 2.19.0
ruby 2.rb 1013ms 1.8ms 306.6MB 1220ms 67ms truffleruby 22.3.1
ruby 2.rb timeout 0.0ms 32.2MB 4973ms 10ms ruby 3.2.0
ruby 2.rb timeout 0.0ms 33.0MB 4967ms 17ms ruby/yjit 3.2.0

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
dart 3.dart 62ms 1.3ms 14.2MB 50ms 0ms dart/exe 2.19.0
ruby 2-m.rb 380ms 2.8ms 305.0MB 580ms 73ms truffleruby 22.3.1
ruby 2.rb 2169ms 0.8ms 33.0MB 2140ms 10ms ruby/yjit 3.2.0
ruby 2.rb 3369ms 22ms 32.2MB 3340ms 13ms ruby 3.2.0

nsieve

Input: 12

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ruby 1.rb timeout 0.0ms 344.6MB 4850ms 123ms ruby 3.2.0
ruby 1.rb timeout 0.0ms 345.1MB 4833ms 143ms ruby/yjit 3.2.0
ruby 1.rb timeout 0.0ms 689.3MB 5030ms 153ms truffleruby 22.3.1

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ruby 1.rb 2733ms 12ms 428.6MB 3227ms 123ms truffleruby 22.3.1
ruby 1.rb timeout 0.0ms 151.1MB 4910ms 70ms ruby 3.2.0
ruby 1.rb timeout 0.0ms 151.5MB 4910ms 70ms ruby/yjit 3.2.0

pidigits

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
dart 2.dart 1695ms 12ms 22.2MB 1627ms 40ms dart/exe 2.19.0
ruby 1.rb timeout 0.0ms 158.2MB 4917ms 57ms ruby 3.2.0
ruby 1.rb timeout 0.0ms 158.6MB 4930ms 50ms ruby/yjit 3.2.0
ruby 1.rb timeout 0.0ms 428.4MB 9447ms 213ms truffleruby 22.3.1

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
dart 2.dart 424ms 0.6ms 22.6MB 380ms 27ms dart/exe 2.19.0
ruby 1-m.rb 1921ms 17ms 423.5MB 3527ms 133ms truffleruby 22.3.1
ruby 1.rb 2377ms 5.5ms 159.8MB 2310ms 47ms ruby/yjit 3.2.0
ruby 1.rb 2381ms 3.7ms 158.3MB 2307ms 60ms ruby 3.2.0

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
dart 1.dart timeout 0.0ms 13.7MB 4980ms 0ms dart/exe 2.19.0
ruby 4.rb timeout 0.0ms 32.2MB 4977ms 7ms ruby 3.2.0
ruby 4.rb timeout 0.0ms 32.8MB 4973ms 10ms ruby/yjit 3.2.0
ruby 4.rb timeout 0.0ms 585.6MB 5217ms 223ms truffleruby 22.3.1

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
dart 1.dart 1293ms 1.0ms 13.9MB 1273ms 0ms dart/exe 2.19.0
ruby 4.rb timeout 0.0ms 32.1MB 4970ms 10ms ruby 3.2.0
ruby 4.rb timeout 0.0ms 32.8MB 4973ms 10ms ruby/yjit 3.2.0
ruby 4.rb timeout 0.0ms 580.5MB 5417ms 200ms truffleruby 22.3.1

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
dart 1.dart 333ms 2.8ms 13.5MB 317ms 0ms dart/exe 2.19.0
ruby 4.rb 2454ms 2.0ms 479.2MB 2940ms 143ms truffleruby 22.3.1
ruby 4.rb timeout 0.0ms 32.4MB 4970ms 7ms ruby 3.2.0
ruby 4.rb timeout 0.0ms 32.8MB 4967ms 13ms ruby/yjit 3.2.0