V VS Ruby benchmarks

Current benchmark data was generated on Sun Jun 01 2025, 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
v 1.v 775ms 3.4ms 22.2MB 760ms 0ms v/clang+gc 0.4.10
v 1.v 2160ms 14ms 2086.6MB 1263ms 880ms v/clang 0.4.10
ruby 1-m.rb 4549ms 73ms 838.0MB 6403ms 490ms truffleruby 24.2.1
ruby 1.rb 4697ms 113ms 110.0MB 4607ms 77ms ruby/yjit 3.4.4
ruby 1.rb timeout 0.0ms 70.4MB 4953ms 37ms ruby 3.4.4

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
v 1.v 70ms 1.1ms 4.6MB 60ms 0ms v/clang+gc 0.4.10
v 1.v 206ms 5.6ms 197.9MB 120ms 73ms v/clang 0.4.10
ruby 1.rb 489ms 7.3ms 20.3MB 463ms 10ms ruby/yjit 3.4.4
ruby 1-m.rb 502ms 12ms 405.6MB 983ms 153ms truffleruby 24.2.1
ruby 1.rb 948ms 7.8ms 19.5MB 927ms 10ms ruby 3.4.4

coro-prime-sieve

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ruby 1.rb 1405ms 6.4ms 63.8MB 1330ms 60ms ruby/yjit 3.4.4
ruby 1.rb 1867ms 34ms 63.0MB 1787ms 63ms ruby 3.4.4
ruby 1.rb timeout 0.0ms 348.7MB 4700ms 1477ms truffleruby 24.2.1
v 1.v timeout 0.0ms 18.1MB 8343ms 10870ms v/clang 0.4.10
v 1.v timeout 0.0ms 18.9MB 8547ms 10677ms v/clang+gc 0.4.10

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ruby 1.rb 152ms 1.3ms 25.6MB 123ms 13ms ruby/yjit 3.4.4
ruby 1.rb 182ms 1.0ms 25.0MB 150ms 13ms ruby 3.4.4
v 1-m.v 1401ms 28ms 9.8MB 2270ms 3003ms v/clang 0.4.10
v 1-m.v 1467ms 100ms 10.4MB 2407ms 3117ms v/clang+gc 0.4.10
ruby 1.rb timeout 0.0ms 356.8MB 4790ms 1430ms truffleruby 24.2.1

edigits

Input: 250001

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
v 1.v timeout 0.0ms 8.3MB 4990ms 0ms v/clang+gc 0.4.10

Input: 100000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
v 1.v timeout 0.0ms 4.8MB 4990ms 0ms v/clang+gc 0.4.10

fannkuch-redux

Input: 11

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
v 1.v 2198ms 7.2ms 1.9MB 2187ms 0ms v/clang+gc 0.4.10
v 1.v 2294ms 1.6ms 1.1MB 2283ms 0ms v/clang 0.4.10

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
v 1.v 187ms 1.9ms 1.9MB 180ms 0ms v/clang+gc 0.4.10
v 1.v 194ms 1.9ms 1.1MB 187ms 0ms v/clang 0.4.10

fasta

Input: 2500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
v 1.v 503ms 4.3ms 1.3MB 493ms 0ms v/clang 0.4.10
v 1.v 522ms 1.0ms 2.1MB 510ms 0ms v/clang+gc 0.4.10
ruby 6.rb 2020ms 7.1ms 23.0MB 1993ms 13ms ruby/yjit 3.4.4
ruby 6-m.rb 2228ms 213ms 408.8MB 5793ms 337ms truffleruby 24.2.1
ruby 6.rb 3691ms 14ms 22.4MB 3667ms 10ms ruby 3.4.4

Input: 250000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
v 1.v 52ms 0.5ms 1.3MB 43ms 0ms v/clang 0.4.10
v 1.v 56ms 2.0ms 2.1MB 50ms 0ms v/clang+gc 0.4.10
ruby 6.rb 255ms 2.3ms 15.2MB 240ms 0ms ruby/yjit 3.4.4
ruby 6.rb 420ms 5.4ms 14.5MB 403ms 0ms ruby 3.4.4
ruby 6-m.rb 729ms 109ms 365.6MB 1803ms 163ms truffleruby 24.2.1

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
v 1.v 1.0ms 0.0ms 1.4MB 0ms 0ms v/clang 0.4.10
v 1.v 1.3ms 0.0ms 1.9MB 0ms 0ms v/clang+gc 0.4.10
ruby 1.rb 34ms 0.5ms 141.5MB 10ms 26ms truffleruby 24.2.1
ruby 1.rb 50ms 1.4ms 12.9MB 38ms 2ms ruby/yjit 3.4.4
ruby 1.rb 51ms 1.7ms 12.8MB 36ms 2ms ruby 3.4.4

lru

Input: 1000 1000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
v 1.v 243ms 6.1ms 1.3MB 233ms 0ms v/clang 0.4.10
v 1.v 256ms 1.5ms 2.1MB 250ms 0ms v/clang+gc 0.4.10
ruby 1.rb 345ms 2.2ms 13.5MB 327ms 10ms ruby/yjit 3.4.4
ruby 1.rb 531ms 3.8ms 12.9MB 507ms 10ms ruby 3.4.4
ruby 1-m.rb 681ms 22ms 372.4MB 1237ms 140ms truffleruby 24.2.1

Input: 1000 3000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
v 1.v 717ms 0.9ms 1.3MB 710ms 0ms v/clang 0.4.10
v 1.v 768ms 2.8ms 2.1MB 760ms 0ms v/clang+gc 0.4.10
ruby 1.rb 906ms 5.6ms 13.5MB 890ms 3ms ruby/yjit 3.4.4
ruby 1-m.rb 1181ms 17ms 400.4MB 1707ms 157ms truffleruby 24.2.1
ruby 1.rb 1478ms 4.7ms 12.8MB 1460ms 3ms ruby 3.4.4

Input: 100 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
v 1.v 90ms 2.6ms 1.5MB 80ms 0ms v/clang 0.4.10
v 1.v 103ms 2.0ms 2.1MB 93ms 0ms v/clang+gc 0.4.10
ruby 1.rb 194ms 1.0ms 13.5MB 177ms 7ms ruby/yjit 3.4.4
ruby 1.rb 292ms 3.6ms 12.8MB 280ms 7ms ruby 3.4.4
ruby 1-m.rb 532ms 4.1ms 356.3MB 1023ms 140ms truffleruby 24.2.1

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
v 1.v 310ms 1.3ms 1.6MB 300ms 0ms v/clang 0.4.10
v 1.v 311ms 1.1ms 2.3MB 300ms 0ms v/clang+gc 0.4.10
ruby 2.rb 823ms 8.8ms 310.2MB 1070ms 110ms truffleruby 24.2.1
ruby 2.rb timeout 0.0ms 12.8MB 4983ms 3ms ruby 3.4.4
ruby 2.rb timeout 0.0ms 13.5MB 4983ms 3ms ruby/yjit 3.4.4

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
v 1.v 33ms 0.6ms 1.6MB 27ms 0ms v/clang 0.4.10
v 1.v 34ms 0.5ms 2.3MB 30ms 0ms v/clang+gc 0.4.10
ruby 2-m.rb 323ms 5.2ms 325.5MB 593ms 110ms truffleruby 24.2.1
ruby 2.rb 1025ms 6.4ms 13.5MB 1010ms 3ms ruby/yjit 3.4.4
ruby 2.rb 2919ms 94ms 12.8MB 2903ms 3ms ruby 3.4.4

nsieve

Input: 12

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
v 1.v 304ms 5.3ms 40.3MB 283ms 0ms v/clang 0.4.10
v 1.v 320ms 3.2ms 41.2MB 307ms 0ms v/clang+gc 0.4.10
v 2.v 330ms 2.8ms 6.7MB 320ms 0ms v/clang+gc 0.4.10
v 2.v 332ms 2.3ms 6.1MB 320ms 0ms v/clang 0.4.10
ruby 1.rb timeout 0.0ms 325.3MB 4850ms 133ms ruby 3.4.4
ruby 1.rb timeout 0.0ms 327.0MB 4847ms 140ms ruby/yjit 3.4.4
ruby 1.rb timeout 0.0ms 731.9MB 5060ms 163ms truffleruby 24.2.1

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
v 1.v 62ms 3.3ms 11.9MB 53ms 0ms v/clang+gc 0.4.10
v 1.v 65ms 1.9ms 11.0MB 57ms 0ms v/clang 0.4.10
v 2.v 82ms 1.2ms 2.4MB 73ms 0ms v/clang 0.4.10
v 2.v 82ms 1.3ms 3.1MB 70ms 0ms v/clang+gc 0.4.10
ruby 1-m.rb 1696ms 5.1ms 473.6MB 2500ms 160ms truffleruby 24.2.1
ruby 1.rb 3471ms 137ms 131.8MB 3380ms 80ms ruby/yjit 3.4.4
ruby 1.rb 4452ms 24ms 131.1MB 4367ms 70ms ruby 3.4.4

pidigits

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
v 2.v 3198ms 26ms 3.4MB 3177ms 7ms v/clang+gc 0.4.10
ruby 1.rb timeout 0.0ms 130.3MB 4870ms 113ms ruby 3.4.4
ruby 1.rb timeout 0.0ms 131.1MB 4837ms 147ms ruby/yjit 3.4.4
ruby 1.rb timeout 0.0ms 465.0MB 13420ms 380ms truffleruby 24.2.1

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
v 2.v 782ms 13ms 2.6MB 770ms 0ms v/clang+gc 0.4.10
ruby 1-m.rb 1723ms 255ms 383.7MB 4550ms 200ms truffleruby 24.2.1
ruby 1.rb 1760ms 71ms 130.8MB 1653ms 93ms ruby/yjit 3.4.4
ruby 1.rb 1813ms 6.5ms 130.4MB 1677ms 123ms ruby 3.4.4

regex-redux

Input: 2500000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
v 1.v timeout 0.0ms 83.1MB 4980ms 3ms v/clang+gc 0.4.10

Input: 250000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
v 1.v 3500ms 102ms 34.2MB 3487ms 0ms v/clang+gc 0.4.10

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ruby 4.rb timeout 0.0ms 12.9MB 4983ms 3ms ruby 3.4.4
ruby 4.rb timeout 0.0ms 13.5MB 4980ms 3ms ruby/yjit 3.4.4
ruby 4.rb timeout 0.0ms 436.2MB 5167ms 233ms truffleruby 24.2.1
v 1.v timeout 0.0ms 1.6MB 4990ms 0ms v/clang 0.4.10
v 1.v timeout 0.0ms 2.8MB 4990ms 0ms v/clang+gc 0.4.10

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
v 1.v 1285ms 5.0ms 1.5MB 1277ms 0ms v/clang 0.4.10
v 1.v 1330ms 15ms 2.5MB 1320ms 0ms v/clang+gc 0.4.10
ruby 4.rb 4820ms 15ms 423.5MB 5103ms 203ms truffleruby 24.2.1
ruby 4.rb timeout 0.0ms 12.9MB 4987ms 3ms ruby 3.4.4
ruby 4.rb timeout 0.0ms 13.5MB 4980ms 0ms ruby/yjit 3.4.4

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
v 1.v 326ms 1.3ms 1.5MB 320ms 0ms v/clang 0.4.10
v 1.v 332ms 2.2ms 2.5MB 323ms 0ms v/clang+gc 0.4.10
ruby 4.rb 1453ms 19ms 405.2MB 1797ms 150ms truffleruby 24.2.1
ruby 4.rb timeout 0.0ms 12.9MB 4983ms 7ms ruby 3.4.4
ruby 4.rb timeout 0.0ms 13.6MB 4980ms 7ms ruby/yjit 3.4.4