D VS Ruby benchmarks

Current benchmark data was generated on Wed Feb 08 2023, full log can be found HERE

CONTRIBUTIONS are WELCOME!

[x86_64][2 cores] Intel(R) Xeon(R) Platinum 8171M CPU @ 2.60GHz (Model 85)

* -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
d 1.d 3904ms 94ms 75.1MB 4177ms 23ms ldc2 1.30.0
d 1.d timeout 0.0ms 125.0MB 5580ms 40ms dmd 2.102.0
ruby 1.rb timeout 0.0ms 72.6MB 4940ms 40ms ruby 3.2.0
ruby 1.rb timeout 0.0ms 82.1MB 4923ms 57ms ruby/yjit 3.2.0
ruby 1.rb timeout 0.0ms 471.3MB 8477ms 293ms truffleruby 22.3.1

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 356ms 15ms 15.1MB 343ms 0ms ldc2 1.30.0
d 1.d 480ms 7.3ms 27.2MB 497ms 7ms dmd 2.102.0
ruby 1.rb 718ms 9.3ms 40.7MB 673ms 30ms ruby/yjit 3.2.0
ruby 1.rb 1269ms 18ms 40.3MB 1233ms 20ms ruby 3.2.0
ruby 1-m.rb 1341ms 27ms 400.1MB 2230ms 170ms truffleruby 22.3.1

coro-prime-sieve

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ruby 1.rb 4296ms 59ms 82.8MB 4203ms 77ms ruby/yjit 3.2.0
d 1.d timeout 0.0ms 14.2MB 4970ms 10ms dmd 2.102.0
d 1.d timeout 0.0ms 13.3MB 4960ms 17ms ldc2 1.30.0
ruby 1.rb timeout 0.0ms 81.5MB 4900ms 73ms ruby 3.2.0
ruby 1.rb timeout 0.0ms 1103.9MB 4400ms 1323ms truffleruby 22.3.1

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ruby 1.rb 292ms 1.0ms 44.9MB 247ms 33ms ruby/yjit 3.2.0
ruby 1.rb 341ms 17ms 44.5MB 290ms 33ms ruby 3.2.0
d 1.d 1458ms 6.4ms 8.2MB 1440ms 3ms ldc2 1.30.0
d 1.d 1923ms 9.8ms 9.9MB 1897ms 13ms dmd 2.102.0
ruby 1.rb timeout 0.0ms 1096.9MB 4293ms 1420ms truffleruby 22.3.1

edigits

Input: 250001

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d timeout 0.0ms 9.4MB 4980ms 3ms dmd 2.102.0
d 1.d timeout 0.0ms 7.6MB 4987ms 0ms ldc2 1.30.0

Input: 100000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 1070ms 17ms 6.8MB 1057ms 0ms ldc2 1.30.0
d 1.d 1250ms 6.7ms 8.8MB 1237ms 0ms dmd 2.102.0

fannkuch-redux

Input: 11

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1-im.d 799ms 0.9ms 1.5MB 1513ms 0ms ldc2 1.30.0
d 1-i.d 1483ms 6.0ms 1.5MB 1470ms 0ms ldc2 1.30.0
d 2-im.d 3038ms 42ms 1.5MB 5880ms 0ms ldc2 1.30.0
d 1.d 4796ms 40ms 1.5MB 4780ms 0ms ldc2 1.30.0
d 1-i.d timeout 0.0ms 2.2MB 4983ms 0ms dmd 2.102.0
d 1-im.d timeout 0.0ms 2.6MB 9783ms 3ms dmd 2.102.0
d 1.d timeout 0.0ms 2.8MB 4983ms 0ms dmd 2.102.0
d 2-i.d timeout 0.0ms 2.6MB 4983ms 0ms dmd 2.102.0
d 2-im.d timeout 0.0ms 2.7MB 9860ms 0ms dmd 2.102.0
d 2-i.d timeout 0.0ms 1.6MB 4987ms 0ms ldc2 1.30.0

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1-im.d 79ms 2.1ms 1.5MB 120ms 0ms ldc2 1.30.0
d 1-i.d 134ms 13ms 1.6MB 123ms 0ms ldc2 1.30.0
d 2-im.d 272ms 7.5ms 1.6MB 480ms 0ms ldc2 1.30.0
d 1.d 386ms 6.0ms 1.6MB 377ms 0ms ldc2 1.30.0
d 1.d 420ms 0.6ms 2.7MB 407ms 0ms dmd 2.102.0
d 2-i.d 480ms 0.4ms 1.5MB 470ms 0ms ldc2 1.30.0
d 1-im.d 657ms 120ms 2.7MB 1037ms 0ms dmd 2.102.0
d 2-im.d 923ms 22ms 2.9MB 1730ms 0ms dmd 2.102.0
d 1-i.d 1057ms 43ms 2.2MB 1047ms 0ms dmd 2.102.0
d 2-i.d 1622ms 10ms 2.6MB 1613ms 0ms dmd 2.102.0

fasta

Input: 2500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 251ms 3.2ms 30.8MB 227ms 13ms ldc2 1.30.0
d 1.d 805ms 2.8ms 40.3MB 787ms 10ms dmd 2.102.0
ruby 6.rb 2828ms 11ms 43.6MB 2787ms 27ms ruby/yjit 3.2.0
ruby 6-m.rb 3219ms 20ms 392.0MB 5753ms 340ms truffleruby 22.3.1
ruby 6.rb timeout 0.0ms 42.9MB 4957ms 23ms ruby 3.2.0

Input: 250000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 30ms 1.1ms 6.9MB 13ms 0ms ldc2 1.30.0
d 1.d 85ms 0.2ms 13.2MB 77ms 0ms dmd 2.102.0
ruby 6.rb 368ms 4.1ms 35.0MB 337ms 17ms ruby/yjit 3.2.0
ruby 6.rb 594ms 3.7ms 34.4MB 557ms 17ms ruby 3.2.0
ruby 6-m.rb 1035ms 11ms 324.2MB 1757ms 143ms truffleruby 22.3.1

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 2.8ms 1.0ms 4.4MB 0ms 0ms dmd 2.102.0
d 1.d 3.3ms 0.9ms 2.9MB 0ms 0ms ldc2 1.30.0
ruby 1.rb 54ms 1.8ms 153.4MB 30ms 28ms truffleruby 22.3.1
ruby 1.rb 87ms 1.1ms 32.1MB 52ms 18ms ruby 3.2.0
ruby 1.rb 91ms 4.1ms 32.3MB 64ms 14ms ruby/yjit 3.2.0

json-serde

Input: sample 5000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 2.d 87ms 5.4ms 15.3MB 80ms 3ms ldc2 1.30.0
d 2.d 357ms 9.7ms 22.5MB 347ms 3ms dmd 2.102.0
ruby 1.rb 536ms 9.1ms 52.0MB 493ms 27ms ruby/yjit 3.2.0
ruby 1.rb 539ms 2.7ms 54.3MB 493ms 27ms ruby 3.2.0
ruby 1.rb timeout 0.0ms 429.6MB 9103ms 237ms truffleruby 22.3.1

Input: canada 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 2.d 700ms 16ms 138.1MB 650ms 33ms ldc2 1.30.0
d 2.d 3745ms 81ms 157.5MB 3750ms 47ms dmd 2.102.0
ruby 1.rb 4869ms 23ms 174.3MB 4730ms 123ms ruby/yjit 3.2.0
ruby 1.rb 4894ms 50ms 175.2MB 4767ms 110ms ruby 3.2.0
ruby 1.rb timeout 0.0ms 404.1MB 9173ms 250ms truffleruby 22.3.1

knucleotide

Input: 2500000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1-m.d 1337ms 32ms 51.3MB 2470ms 23ms ldc2 1.30.0
d 1-m.d 4450ms 89ms 53.3MB 8250ms 23ms dmd 2.102.0

Input: 250000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1-m.d 169ms 9.7ms 40.6MB 277ms 3ms ldc2 1.30.0
d 1-m.d 484ms 14ms 40.8MB 863ms 13ms dmd 2.102.0

lru

Input: 1000 1000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 222ms 5.9ms 3.7MB 213ms 0ms ldc2 1.30.0
d 1.d 296ms 1.2ms 5.3MB 283ms 0ms dmd 2.102.0
ruby 1.rb 547ms 7.6ms 33.0MB 513ms 20ms ruby/yjit 3.2.0
ruby 1.rb 783ms 2.8ms 32.4MB 753ms 13ms ruby 3.2.0
ruby 1-m.rb 991ms 25ms 326.0MB 1430ms 137ms truffleruby 22.3.1

Input: 1000 3000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 597ms 2.1ms 3.7MB 587ms 0ms ldc2 1.30.0
d 1.d 860ms 10ms 5.4MB 853ms 0ms dmd 2.102.0
ruby 1.rb 1475ms 1.9ms 33.0MB 1447ms 13ms ruby/yjit 3.2.0
ruby 1.rb 1943ms 72ms 333.2MB 2463ms 183ms truffleruby 22.3.1
ruby 1.rb 2117ms 13ms 32.4MB 2083ms 17ms ruby 3.2.0

Input: 100 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 94ms 1.2ms 3.7MB 80ms 0ms ldc2 1.30.0
d 1.d 128ms 2.3ms 5.0MB 117ms 0ms dmd 2.102.0
ruby 1.rb 319ms 2.1ms 32.8MB 290ms 13ms ruby/yjit 3.2.0
ruby 1.rb 426ms 2.6ms 32.3MB 397ms 10ms ruby 3.2.0
ruby 1-m.rb 739ms 68ms 311.2MB 1117ms 130ms truffleruby 22.3.1

mandelbrot

Input: 5000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 713ms 6.5ms 6.3MB 697ms 0ms ldc2 1.30.0
d 1.d 3279ms 13ms 7.4MB 3260ms 0ms dmd 2.102.0

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 34ms 1.0ms 2.9MB 23ms 0ms ldc2 1.30.0
d 1.d 140ms 0.9ms 3.7MB 130ms 0ms dmd 2.102.0

merkletrees

Input: 17

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 1818ms 21ms 74.8MB 1883ms 23ms ldc2 1.30.0
d 1.d 3152ms 10ms 153.9MB 3520ms 57ms dmd 2.102.0
ruby 1.rb timeout 0.0ms 96.5MB 4910ms 73ms ruby 3.2.0
ruby 1.rb timeout 0.0ms 97.0MB 4913ms 70ms ruby/yjit 3.2.0
ruby 1.rb timeout 0.0ms 511.3MB 9013ms 283ms truffleruby 22.3.1

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 355ms 8.2ms 38.9MB 330ms 13ms ldc2 1.30.0
d 1.d 660ms 15ms 40.5MB 707ms 10ms dmd 2.102.0
ruby 1-m.rb 4229ms 57ms 589.3MB 7687ms 320ms truffleruby 22.3.1
ruby 1.rb 4784ms 22ms 53.7MB 4710ms 57ms ruby/yjit 3.2.0
ruby 1.rb timeout 0.0ms 52.8MB 4943ms 37ms ruby 3.2.0

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 542ms 7.3ms 1.5MB 527ms 0ms ldc2 1.30.0
d 2.d 577ms 7.9ms 1.5MB 563ms 0ms ldc2 1.30.0
ruby 2.rb 1435ms 12ms 298.5MB 1713ms 100ms truffleruby 22.3.1
d 1.d 1466ms 20ms 2.6MB 1453ms 0ms dmd 2.102.0
d 2.d 2593ms 6.6ms 2.7MB 2580ms 0ms dmd 2.102.0
ruby 2.rb timeout 0.0ms 32.2MB 4970ms 13ms ruby 3.2.0
ruby 2.rb timeout 0.0ms 33.0MB 4963ms 13ms ruby/yjit 3.2.0

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 57ms 0.4ms 1.5MB 50ms 0ms ldc2 1.30.0
d 2.d 60ms 0.3ms 1.5MB 47ms 0ms ldc2 1.30.0
d 1.d 155ms 4.8ms 2.6MB 140ms 0ms dmd 2.102.0
d 2.d 264ms 4.0ms 2.6MB 257ms 0ms dmd 2.102.0
ruby 2-m.rb 513ms 25ms 309.9MB 770ms 127ms truffleruby 22.3.1
ruby 2.rb 2528ms 32ms 33.1MB 2487ms 23ms ruby/yjit 3.2.0
ruby 2.rb 4072ms 73ms 32.2MB 4043ms 13ms ruby 3.2.0

nsieve

Input: 12

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 942ms 18ms 42.5MB 907ms 13ms ldc2 1.30.0
d 2.d 966ms 16ms 48.7MB 930ms 17ms ldc2 1.30.0
d 1.d 988ms 16ms 76.1MB 953ms 20ms dmd 2.102.0
d 2.d 1829ms 35ms 50.0MB 1800ms 13ms dmd 2.102.0
ruby 1.rb timeout 0.0ms 344.6MB 4780ms 197ms ruby 3.2.0
ruby 1.rb timeout 0.0ms 344.9MB 4787ms 190ms ruby/yjit 3.2.0
ruby 1.rb timeout 0.0ms 682.1MB 5030ms 217ms truffleruby 22.3.1

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 142ms 5.6ms 14.1MB 127ms 0ms ldc2 1.30.0
d 1.d 161ms 1.4ms 26.0MB 140ms 0ms dmd 2.102.0
d 2.d 232ms 6.0ms 15.4MB 217ms 0ms ldc2 1.30.0
d 2.d 458ms 1.4ms 16.7MB 443ms 0ms dmd 2.102.0
ruby 1.rb 3780ms 6.1ms 431.4MB 4390ms 167ms truffleruby 22.3.1
ruby 1.rb timeout 0.0ms 151.0MB 4900ms 77ms ruby 3.2.0
ruby 1.rb timeout 0.0ms 151.5MB 4893ms 90ms ruby/yjit 3.2.0

pidigits

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 3528ms 25ms 7.9MB 3530ms 17ms ldc2 1.30.0
d 1.d timeout 0.0ms 9.3MB 4997ms 17ms dmd 2.102.0
ruby 1.rb timeout 0.0ms 159.1MB 4913ms 67ms ruby 3.2.0
ruby 1.rb timeout 0.0ms 159.8MB 4903ms 73ms ruby/yjit 3.2.0
ruby 1.rb timeout 0.0ms 430.8MB 9380ms 223ms truffleruby 22.3.1

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 833ms 5.7ms 7.8MB 820ms 3ms ldc2 1.30.0
d 1.d 1661ms 15ms 9.4MB 1647ms 7ms dmd 2.102.0
ruby 1-m.rb 2551ms 7.6ms 419.5MB 4673ms 190ms truffleruby 22.3.1
ruby 1.rb 3739ms 3.7ms 158.8MB 3630ms 87ms ruby/yjit 3.2.0
ruby 1.rb 3746ms 14ms 158.0MB 3647ms 80ms ruby 3.2.0

regex-redux

Input: 2500000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 3.d 881ms 1.9ms 167.1MB 1077ms 73ms ldc2 1.30.0
d 3.d 2003ms 6.0ms 171.4MB 2230ms 63ms dmd 2.102.0

Input: 250000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 3.d 95ms 1.0ms 23.2MB 100ms 7ms ldc2 1.30.0
d 3.d 211ms 1.4ms 25.3MB 217ms 3ms dmd 2.102.0

secp256k1

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d timeout 0.0ms 6.0MB 4993ms 3ms dmd 2.102.0
d 1.d timeout 0.0ms 3.7MB 4990ms 7ms ldc2 1.30.0

Input: 500

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 1797ms 20ms 3.8MB 1787ms 0ms ldc2 1.30.0
d 1.d 3571ms 7.9ms 5.9MB 3563ms 0ms dmd 2.102.0

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 3326ms 2880ms 5.1MB 4983ms 0ms dmd 2.102.0
d 1.d 4357ms 8.9ms 3.7MB 4343ms 0ms ldc2 1.30.0
ruby 4.rb timeout 0.0ms 32.2MB 4967ms 10ms ruby 3.2.0
ruby 4.rb timeout 0.0ms 32.9MB 4973ms 13ms ruby/yjit 3.2.0
ruby 4.rb timeout 0.0ms 404.5MB 5227ms 213ms truffleruby 22.3.1

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 1091ms 0.8ms 3.5MB 1080ms 0ms ldc2 1.30.0
d 1.d 1256ms 3.0ms 5.1MB 1243ms 0ms dmd 2.102.0
ruby 4.rb timeout 0.0ms 32.2MB 4970ms 17ms ruby 3.2.0
ruby 4.rb timeout 0.0ms 32.8MB 4957ms 20ms ruby/yjit 3.2.0
ruby 4.rb timeout 0.0ms 460.5MB 5583ms 183ms truffleruby 22.3.1

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
d 1.d 278ms 0.5ms 3.0MB 267ms 0ms ldc2 1.30.0
d 1.d 318ms 1.4ms 4.4MB 310ms 0ms dmd 2.102.0
ruby 4.rb 3275ms 18ms 360.5MB 3963ms 167ms truffleruby 22.3.1
ruby 4.rb timeout 0.0ms 32.0MB 4960ms 23ms ruby 3.2.0
ruby 4.rb timeout 0.0ms 32.9MB 4967ms 10ms ruby/yjit 3.2.0