Ruby VS Dart benchmarks

Current benchmark data was generated on Thu Feb 01 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.)

binarytrees

Input: 18

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
dart 1.dart 702ms 2.0ms 80.5MB 660ms 43ms dart/exe 3.2.6
ruby 1.rb 4037ms 417ms 123.9MB 3920ms 100ms ruby/yjit 3.3.0
ruby 1.rb timeout 0.0ms 85.3MB 4930ms 53ms ruby 3.3.0
ruby 1.rb timeout 0.0ms 679.9MB 9080ms 607ms truffleruby 23.1.2

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
dart 1.dart 75ms 0.5ms 42.4MB 57ms 10ms dart/exe 3.2.6
ruby 1.rb 408ms 6.3ms 36.4MB 367ms 27ms ruby/yjit 3.3.0
ruby 1.rb 856ms 5.9ms 36.4MB 813ms 20ms ruby 3.3.0
ruby 1-m.rb 910ms 25ms 437.3MB 2027ms 183ms truffleruby 23.1.2

coro-prime-sieve

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ruby 1.rb 1431ms 5.5ms 78.5MB 1337ms 77ms ruby/yjit 3.3.0
ruby 1.rb 1779ms 29ms 78.3MB 1693ms 70ms ruby 3.3.0
dart 1.dart timeout 0.0ms 20.3MB 4943ms 67ms dart/exe 3.2.6
ruby 1.rb timeout 0.0ms 717.5MB 4877ms 1427ms truffleruby 23.1.2

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ruby 1.rb 169ms 1.3ms 40.5MB 127ms 27ms ruby/yjit 3.3.0
ruby 1.rb 190ms 2.2ms 40.3MB 133ms 40ms ruby 3.3.0
dart 1.dart 373ms 5.3ms 10.3MB 350ms 13ms dart/exe 3.2.6
ruby 1.rb timeout 0.0ms 730.8MB 4667ms 1557ms truffleruby 23.1.2

fasta

Input: 2500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
dart 1.dart 369ms 1.2ms 8.5MB 357ms 0ms dart/exe 3.2.6
ruby 6.rb 1457ms 11ms 39.1MB 1407ms 33ms ruby/yjit 3.3.0
ruby 6-m.rb 2178ms 87ms 420.2MB 5517ms 327ms truffleruby 23.1.2
ruby 6.rb 3794ms 10ms 37.6MB 3760ms 20ms ruby 3.3.0

Input: 250000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
dart 1.dart 44ms 0.7ms 8.5MB 30ms 0ms dart/exe 3.2.6
ruby 6.rb 223ms 11ms 30.4MB 190ms 17ms ruby/yjit 3.3.0
ruby 6.rb 445ms 0.8ms 30.0MB 407ms 23ms ruby 3.3.0
ruby 6-m.rb 835ms 23ms 372.2MB 2033ms 187ms truffleruby 23.1.2

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
dart 1.dart 4.2ms 0.3ms 6.3MB 0ms 0ms dart/exe 3.2.6
ruby 1.rb 41ms 0.2ms 161.9MB 8ms 32ms truffleruby 23.1.2
ruby 1.rb 70ms 2.0ms 28.3MB 46ms 12ms ruby 3.3.0
ruby 1.rb 72ms 1.8ms 28.4MB 46ms 16ms ruby/yjit 3.3.0

json-serde

Input: sample 5000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
dart 1.dart 202ms 4.6ms 53.2MB 173ms 17ms dart/exe 3.2.6
ruby 1.rb 295ms 2.6ms 49.8MB 250ms 30ms ruby 3.3.0
ruby 1.rb 305ms 2.8ms 49.0MB 257ms 33ms ruby/yjit 3.3.0
ruby 1-m.rb 4664ms 272ms 508.1MB 12213ms 377ms truffleruby 23.1.2

Input: canada 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
dart 1.dart 1586ms 26ms 296.2MB 1623ms 130ms dart/exe 3.2.6
ruby 1.rb 2261ms 6.5ms 170.4MB 2133ms 110ms ruby/yjit 3.3.0
ruby 1.rb 2266ms 17ms 168.1MB 2147ms 103ms ruby 3.3.0
ruby 1.rb timeout 0.0ms 566.0MB 13103ms 413ms truffleruby 23.1.2

lru

Input: 1000 1000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
dart 2.dart 168ms 4.5ms 9.0MB 153ms 0ms dart/exe 3.2.6
ruby 1.rb 335ms 1.4ms 28.6MB 307ms 13ms ruby/yjit 3.3.0
ruby 1.rb 536ms 12ms 28.4MB 503ms 20ms ruby 3.3.0
dart 1.dart 572ms 2.7ms 9.0MB 560ms 0ms dart/exe 3.2.6
ruby 1-m.rb 658ms 38ms 365.9MB 1090ms 147ms truffleruby 23.1.2

Input: 1000 3000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
dart 2.dart 483ms 4.1ms 8.8MB 467ms 0ms dart/exe 3.2.6
ruby 1.rb 860ms 11ms 28.6MB 823ms 20ms ruby/yjit 3.3.0
ruby 1.rb 1229ms 22ms 408.0MB 1667ms 170ms truffleruby 23.1.2
ruby 1.rb 1440ms 9.3ms 28.3MB 1403ms 23ms ruby 3.3.0
dart 1.dart 1698ms 2.4ms 8.9MB 1687ms 3ms dart/exe 3.2.6

Input: 100 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
dart 2.dart 80ms 0.6ms 9.0MB 70ms 0ms dart/exe 3.2.6
dart 1.dart 118ms 1.5ms 8.5MB 107ms 3ms dart/exe 3.2.6
ruby 1.rb 202ms 0.6ms 28.6MB 177ms 13ms ruby/yjit 3.3.0
ruby 1.rb 299ms 2.9ms 28.3MB 270ms 17ms ruby 3.3.0
ruby 1-m.rb 526ms 34ms 355.4MB 967ms 143ms truffleruby 23.1.2

merkletrees

Input: 17

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
dart 1.dart 321ms 3.4ms 63.5MB 290ms 30ms dart/exe 3.2.6
ruby 1.rb timeout 0.0ms 87.8MB 4917ms 73ms ruby 3.3.0
ruby 1.rb timeout 0.0ms 88.2MB 4917ms 67ms ruby/yjit 3.3.0
ruby 1.rb timeout 0.0ms 575.9MB 12800ms 437ms truffleruby 23.1.2

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
dart 1.dart 84ms 0.8ms 43.4MB 60ms 10ms dart/exe 3.2.6
ruby 1-m.rb 2642ms 152ms 618.4MB 6900ms 303ms truffleruby 23.1.2
ruby 1.rb 3031ms 1.4ms 46.8MB 2987ms 30ms ruby/yjit 3.3.0
ruby 1.rb 4013ms 75ms 46.5MB 3970ms 23ms ruby 3.3.0

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
dart 3.dart 447ms 0.3ms 6.3MB 437ms 0ms dart/exe 3.2.6
ruby 2.rb 953ms 118ms 319.9MB 1190ms 110ms truffleruby 23.1.2
ruby 2.rb timeout 0.0ms 28.1MB 4967ms 17ms ruby 3.3.0
ruby 2.rb timeout 0.0ms 28.5MB 4963ms 20ms ruby/yjit 3.3.0

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
dart 3.dart 50ms 0.8ms 6.1MB 40ms 0ms dart/exe 3.2.6
ruby 2-m.rb 319ms 5.4ms 312.4MB 540ms 113ms truffleruby 23.1.2
ruby 2.rb 1455ms 8.4ms 28.4MB 1423ms 17ms ruby/yjit 3.3.0
ruby 2.rb 2876ms 37ms 28.1MB 2840ms 20ms ruby 3.3.0

nsieve

Input: 12

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ruby 1.rb timeout 0.0ms 340.6MB 4840ms 150ms ruby 3.3.0
ruby 1.rb timeout 0.0ms 342.0MB 4843ms 140ms ruby/yjit 3.3.0
ruby 1.rb timeout 0.0ms 743.0MB 5043ms 167ms truffleruby 23.1.2

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ruby 1-m.rb 1665ms 20ms 472.9MB 2357ms 177ms truffleruby 23.1.2
ruby 1.rb 3530ms 47ms 146.6MB 3423ms 87ms ruby/yjit 3.3.0
ruby 1.rb 4855ms 12ms 146.4MB 4753ms 83ms ruby 3.3.0

pidigits

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
dart 2.dart 1241ms 8.6ms 14.5MB 1200ms 40ms dart/exe 3.2.6
ruby 1.rb timeout 0.0ms 108.6MB 4923ms 63ms ruby 3.3.0
ruby 1.rb timeout 0.0ms 108.8MB 4913ms 70ms ruby/yjit 3.3.0
ruby 1.rb timeout 0.0ms 456.4MB 13293ms 427ms truffleruby 23.1.2

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
dart 2.dart 301ms 4.8ms 14.5MB 277ms 20ms dart/exe 3.2.6
ruby 1.rb 1680ms 2.7ms 109.0MB 1597ms 67ms ruby/yjit 3.3.0
ruby 1.rb 1696ms 16ms 108.5MB 1610ms 70ms ruby 3.3.0
ruby 1-m.rb 1925ms 70ms 409.5MB 5020ms 253ms truffleruby 23.1.2

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
dart 1.dart 3807ms 41ms 6.1MB 3797ms 0ms dart/exe 3.2.6
ruby 4.rb timeout 0.0ms 28.1MB 4973ms 10ms ruby 3.3.0
ruby 4.rb timeout 0.0ms 28.5MB 4963ms 17ms ruby/yjit 3.3.0
ruby 4.rb timeout 0.0ms 527.7MB 5150ms 253ms truffleruby 23.1.2

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
dart 1.dart 961ms 4.2ms 6.1MB 950ms 0ms dart/exe 3.2.6
ruby 4.rb 4605ms 65ms 509.3MB 4857ms 220ms truffleruby 23.1.2
ruby 4.rb timeout 0.0ms 28.1MB 4967ms 20ms ruby 3.3.0
ruby 4.rb timeout 0.0ms 28.5MB 4963ms 20ms ruby/yjit 3.3.0

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
dart 1.dart 243ms 1.0ms 6.0MB 230ms 0ms dart/exe 3.2.6
ruby 4.rb 1257ms 60ms 358.6MB 1563ms 133ms truffleruby 23.1.2
ruby 4.rb timeout 0.0ms 28.3MB 4973ms 10ms ruby 3.3.0
ruby 4.rb timeout 0.0ms 28.4MB 4970ms 13ms ruby/yjit 3.3.0