Javascript VS Ruby benchmarks

Current benchmark data was generated on Mon Mar 31 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
javascript 1-m.js 1005ms 34ms 179.3MB 1543ms 267ms bun 1.2.7
javascript 1-m.js 1224ms 3.5ms 250.8MB 2130ms 153ms node 23.10.0
ruby 1.rb 4874ms 16ms 109.4MB 4770ms 90ms ruby/yjit 3.4.2
ruby 1.rb timeout 0.0ms 70.1MB 4937ms 43ms ruby 3.4.2
ruby 1.rb timeout 0.0ms 793.7MB 6597ms 650ms truffleruby 24.2.0

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 100ms 0.5ms 79.1MB 73ms 27ms bun 1.2.7
javascript 1.js 126ms 0.7ms 78.8MB 130ms 23ms node 23.10.0
ruby 1.rb 494ms 2.7ms 20.3MB 470ms 10ms ruby/yjit 3.4.2
ruby 1-m.rb 575ms 60ms 422.2MB 1147ms 167ms truffleruby 24.2.0
ruby 1.rb 937ms 6.7ms 19.6MB 910ms 13ms ruby 3.4.2

coro-prime-sieve

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ruby 1.rb 1478ms 22ms 63.8MB 1397ms 67ms ruby/yjit 3.4.2
javascript 1.js 1662ms 72ms 90.2MB 1733ms 57ms node 23.10.0
ruby 1.rb 1855ms 2.6ms 63.1MB 1780ms 60ms ruby 3.4.2
javascript 1.js 2500ms 20ms 101.3MB 2520ms 70ms bun 1.2.7
ruby 1.rb timeout 0.0ms 347.0MB 4763ms 1433ms truffleruby 24.2.0

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 158ms 4.4ms 72.7MB 143ms 27ms node 23.10.0
ruby 1.rb 159ms 1.0ms 25.6MB 127ms 17ms ruby/yjit 3.4.2
ruby 1.rb 185ms 1.3ms 25.1MB 153ms 17ms ruby 3.4.2
javascript 1.js 199ms 0.9ms 88.4MB 220ms 33ms bun 1.2.7
ruby 1.rb timeout 0.0ms 353.2MB 4600ms 1553ms truffleruby 24.2.0

edigits

Input: 250001

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 285ms 4.3ms 63.7MB 300ms 27ms node 23.10.0
javascript 1.js 526ms 4.8ms 78.0MB 497ms 20ms bun 1.2.7

Input: 100000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 144ms 12ms 62.0MB 160ms 20ms node 23.10.0
javascript 1.js 500ms 3.9ms 67.7MB 470ms 23ms bun 1.2.7

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 13ms 0.3ms 33.3MB 0ms 0ms bun 1.2.7
javascript 1.js 31ms 0.3ms 47.9MB 18ms 2ms node 23.10.0
ruby 1.rb 35ms 0.4ms 142.2MB 14ms 28ms truffleruby 24.2.0
ruby 1.rb 52ms 3.5ms 12.9MB 34ms 2ms ruby 3.4.2
ruby 1.rb 53ms 0.9ms 13.0MB 34ms 6ms ruby/yjit 3.4.2

http-server

Input: 3000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1-m.bun.js 330ms 13ms 76.0MB 143ms 420ms bun 1.2.7
javascript 1.js 2961ms 150ms 188.6MB 2830ms 1410ms node 23.10.0

Input: 500

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.bun.js 108ms 7.0ms 55.8MB 30ms 87ms bun 1.2.7
javascript 1.js 362ms 2.6ms 79.9MB 350ms 113ms node 23.10.0

json-serde

Input: sample 5000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 81ms 7.1ms 70.9MB 50ms 20ms bun 1.2.7
javascript 1.js 109ms 1.2ms 75.7MB 97ms 17ms node 23.10.0
ruby 1.rb 252ms 3.6ms 29.1MB 220ms 20ms ruby 3.4.2
ruby 1.rb 256ms 3.5ms 28.4MB 227ms 17ms ruby/yjit 3.4.2
ruby 1-m.rb 4493ms 172ms 518.1MB 11833ms 350ms truffleruby 24.2.0

Input: canada 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 412ms 4.6ms 268.3MB 340ms 117ms bun 1.2.7
javascript 1.js 690ms 2.7ms 200.9MB 803ms 80ms node 23.10.0
ruby 1.rb 2091ms 5.7ms 132.7MB 2000ms 77ms ruby 3.4.2
ruby 1.rb 2116ms 29ms 135.1MB 2017ms 83ms ruby/yjit 3.4.2
ruby 1.rb timeout 0.0ms 495.0MB 13197ms 370ms truffleruby 24.2.0

lru

Input: 1000 1000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 2.js 310ms 0.4ms 63.1MB 297ms 20ms node 23.10.0
ruby 1.rb 338ms 2.7ms 13.5MB 320ms 7ms ruby/yjit 3.4.2
ruby 1.rb 534ms 7.9ms 13.0MB 517ms 7ms ruby 3.4.2
javascript 1.js 553ms 2.0ms 60.8MB 540ms 10ms node 23.10.0
javascript 2.js 653ms 5.3ms 123.0MB 710ms 60ms bun 1.2.7
ruby 1-m.rb 679ms 33ms 375.8MB 1217ms 147ms truffleruby 24.2.0
javascript 1.js 821ms 7.2ms 107.4MB 903ms 77ms bun 1.2.7

Input: 1000 3000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 2.js 850ms 1.6ms 68.3MB 837ms 20ms node 23.10.0
ruby 1.rb 880ms 3.0ms 13.5MB 857ms 7ms ruby/yjit 3.4.2
ruby 1-m.rb 1252ms 51ms 416.2MB 1803ms 183ms truffleruby 24.2.0
ruby 1.rb 1490ms 12ms 13.0MB 1470ms 7ms ruby 3.4.2
javascript 1.js 1586ms 4.8ms 67.9MB 1570ms 13ms node 23.10.0
javascript 2.js 1819ms 7.8ms 123.2MB 1987ms 67ms bun 1.2.7
javascript 1.js 2374ms 11ms 111.6MB 2680ms 147ms bun 1.2.7

Input: 100 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 162ms 0.8ms 58.0MB 147ms 13ms node 23.10.0
javascript 2.js 166ms 0.3ms 56.7MB 160ms 10ms node 23.10.0
ruby 1.rb 196ms 2.7ms 13.5MB 177ms 7ms ruby/yjit 3.4.2
ruby 1.rb 292ms 5.2ms 12.9MB 273ms 0ms ruby 3.4.2
javascript 1.js 315ms 2.8ms 115.1MB 343ms 80ms bun 1.2.7
javascript 2.js 357ms 1.7ms 126.5MB 370ms 57ms bun 1.2.7
ruby 1-m.rb 513ms 36ms 360.4MB 1000ms 140ms truffleruby 24.2.0

merkletrees

Input: 17

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1-m.js 479ms 7.3ms 152.6MB 623ms 137ms bun 1.2.7
javascript 1.js 530ms 2.1ms 130.6MB 613ms 57ms node 23.10.0
ruby 1-m.rb 4071ms 251ms 628.9MB 10250ms 363ms truffleruby 24.2.0
ruby 1.rb timeout 0.0ms 94.3MB 4930ms 50ms ruby 3.4.2
ruby 1.rb timeout 0.0ms 94.8MB 4937ms 50ms ruby/yjit 3.4.2

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 116ms 2.3ms 88.1MB 103ms 33ms bun 1.2.7
javascript 1.js 160ms 2.0ms 98.4MB 163ms 33ms node 23.10.0
ruby 1-m.rb 2113ms 104ms 582.3MB 5393ms 277ms truffleruby 24.2.0
ruby 1.rb 3439ms 28ms 38.3MB 3403ms 23ms ruby/yjit 3.4.2
ruby 1.rb 4410ms 17ms 37.8MB 4373ms 23ms ruby 3.4.2

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 6.js 458ms 4.1ms 55.9MB 447ms 10ms node 23.10.0
javascript 6.js 780ms 18ms 46.1MB 773ms 0ms bun 1.2.7
ruby 2.rb 830ms 8.7ms 322.7MB 1090ms 113ms truffleruby 24.2.0
ruby 2.rb timeout 0.0ms 12.9MB 4987ms 0ms ruby 3.4.2
ruby 2.rb timeout 0.0ms 13.5MB 4980ms 3ms ruby/yjit 3.4.2

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 6.js 79ms 1.0ms 56.2MB 67ms 10ms node 23.10.0
javascript 6.js 98ms 1.2ms 46.3MB 93ms 7ms bun 1.2.7
ruby 2-m.rb 310ms 2.6ms 310.1MB 543ms 113ms truffleruby 24.2.0
ruby 2.rb 1066ms 0.5ms 13.5MB 1047ms 3ms ruby/yjit 3.4.2
ruby 2.rb 2789ms 66ms 12.9MB 2773ms 0ms ruby 3.4.2

secp256k1

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 2521ms 12ms 59.2MB 2527ms 30ms node 23.10.0
javascript 1.js 2842ms 3.4ms 84.8MB 2857ms 50ms bun 1.2.7

Input: 500

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 671ms 1.0ms 57.7MB 677ms 13ms node 23.10.0
javascript 1.js 745ms 4.9ms 84.5MB 740ms 33ms bun 1.2.7

pidigits

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 3.js timeout 0.0ms 87.9MB 4983ms 27ms node 23.10.0
ruby 1.rb timeout 0.0ms 46.7MB 4923ms 67ms ruby 3.4.2
ruby 1.rb timeout 0.0ms 126.8MB 4890ms 100ms ruby/yjit 3.4.2
ruby 1.rb timeout 0.0ms 457.8MB 13330ms 427ms truffleruby 24.2.0

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 3.js 1099ms 2.6ms 70.8MB 1080ms 17ms node 23.10.0
ruby 1-m.rb 1582ms 157ms 399.4MB 4173ms 207ms truffleruby 24.2.0
ruby 1.rb 1703ms 3.1ms 46.2MB 1657ms 33ms ruby 3.4.2
ruby 1.rb 1706ms 60ms 127.5MB 1643ms 50ms ruby/yjit 3.4.2

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 6-m.js 2181ms 15ms 114.1MB 8247ms 60ms node 23.10.0
ruby 4.rb timeout 0.0ms 13.0MB 4983ms 0ms ruby 3.4.2
ruby 4.rb timeout 0.0ms 13.5MB 4980ms 3ms ruby/yjit 3.4.2
ruby 4.rb timeout 0.0ms 463.4MB 5177ms 250ms truffleruby 24.2.0

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 6-m.js 656ms 7.6ms 113.5MB 2320ms 53ms node 23.10.0
ruby 4.rb 4892ms 24ms 472.1MB 5177ms 213ms truffleruby 24.2.0
ruby 4.rb timeout 0.0ms 13.0MB 4980ms 0ms ruby 3.4.2
ruby 4.rb timeout 0.0ms 13.6MB 4980ms 0ms ruby/yjit 3.4.2

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 6-m.js 266ms 1.5ms 109.7MB 813ms 50ms node 23.10.0
ruby 4.rb 1453ms 12ms 389.8MB 1777ms 143ms truffleruby 24.2.0
ruby 4.rb timeout 0.0ms 13.0MB 4980ms 0ms ruby 3.4.2
ruby 4.rb timeout 0.0ms 13.8MB 4983ms 0ms ruby/yjit 3.4.2