Javascript VS Java benchmarks

Current benchmark data was generated on Wed Jan 22 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
java 2.java 467ms 1.5ms 646.0MB 567ms 97ms openjdk 23
java 2-m.java 468ms 12ms 645.0MB 687ms 90ms graal/jvm 17.0.8
java 2.java 498ms 2.1ms 572.9MB 563ms 113ms openjdk 21
javascript 1-m.js 950ms 61ms 187.4MB 1437ms 247ms bun 1.1.45
java 2.java 1170ms 8.1ms 1044.5MB 570ms 760ms openjdk/zgc 21
javascript 1-m.js 1251ms 9.3ms 276.4MB 2177ms 160ms node 23.6.0

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 95ms 0.8ms 79.4MB 77ms 23ms bun 1.1.45
java 2.java 126ms 6.8ms 96.2MB 147ms 40ms openjdk 23
javascript 1.js 127ms 2.0ms 82.4MB 117ms 33ms node 23.6.0
java 2.java 127ms 1.9ms 168.9MB 160ms 23ms openjdk 21
java 2-m.java 150ms 3.7ms 231.2MB 210ms 67ms graal/jvm 17.0.8
java 2.java 307ms 4.8ms 241.9MB 163ms 197ms openjdk/zgc 21

coro-prime-sieve

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 1594ms 14ms 93.6MB 1670ms 63ms node 23.6.0
java 1-m.java 1791ms 170ms 260.0MB 6683ms 143ms openjdk 21
java 1-m.java 2251ms 168ms 241.1MB 8537ms 117ms openjdk 23
javascript 1.js 2295ms 49ms 100.5MB 2313ms 70ms bun 1.1.45
java 1-m.java 2654ms 330ms 1215.5MB 8333ms 1107ms openjdk/zgc 21

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 156ms 1.2ms 76.5MB 137ms 23ms node 23.6.0
javascript 1.js 187ms 1.2ms 86.5MB 203ms 30ms bun 1.1.45
java 1-m.java 394ms 20ms 91.7MB 1290ms 50ms openjdk 23
java 1-m.java 424ms 15ms 123.3MB 1383ms 63ms openjdk 21
java 1-m.java 649ms 27ms 221.3MB 1693ms 260ms openjdk/zgc 21

edigits

Input: 250001

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 277ms 0.8ms 67.3MB 293ms 23ms node 23.6.0
java 1-m.java 611ms 50ms 226.3MB 1660ms 63ms openjdk 23
java 1-m.java 630ms 48ms 412.9MB 1207ms 117ms graal/jvm 17.0.8
java 1-m.java 681ms 6.9ms 267.6MB 1783ms 80ms openjdk 21
javascript 1.js 714ms 5.9ms 77.1MB 693ms 17ms bun 1.1.45
java 1-m.java 943ms 32ms 528.5MB 1630ms 413ms openjdk/zgc 21

Input: 100000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 126ms 0.7ms 65.5MB 140ms 17ms node 23.6.0
java 1-m.java 302ms 19ms 231.6MB 593ms 67ms graal/jvm 17.0.8
java 1-m.java 329ms 2.1ms 177.6MB 883ms 63ms openjdk 21
java 1-m.java 373ms 21ms 127.4MB 1010ms 43ms openjdk 23
java 1-m.java 513ms 35ms 215.4MB 1007ms 213ms openjdk/zgc 21
javascript 1.js 525ms 2.3ms 66.8MB 493ms 23ms bun 1.1.45

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 13ms 0.5ms 32.3MB 0ms 10ms bun 1.1.45
javascript 1.js 31ms 0.6ms 52.0MB 14ms 8ms node 23.6.0
java 1.java 64ms 1.6ms 54.9MB 66ms 18ms graal/jvm 17.0.8
java 1.java 71ms 6.1ms 43.9MB 80ms 16ms openjdk 21
java 1.java 72ms 6.3ms 44.7MB 70ms 20ms openjdk 23
java 1.java 186ms 4.8ms 44.6MB 90ms 126ms openjdk/zgc 21

http-server

Input: 3000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1-m.bun.js 363ms 16ms 71.3MB 133ms 420ms bun 1.1.45
javascript 1.js 3147ms 48ms 195.6MB 2993ms 1487ms node 23.6.0

Input: 500

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.bun.js 127ms 14ms 54.5MB 30ms 93ms bun 1.1.45
javascript 1.js 382ms 1.7ms 84.8MB 360ms 103ms node 23.6.0

json-serde

Input: canada 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 360ms 0.4ms 182.1MB 330ms 70ms bun 1.1.45
javascript 1.js 701ms 3.1ms 206.6MB 800ms 90ms node 23.6.0

Input: sample 5000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 85ms 1.9ms 68.8MB 57ms 20ms bun 1.1.45
javascript 1.js 111ms 0.8ms 79.0MB 100ms 20ms node 23.6.0

lru

Input: 1000 1000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 2.js 307ms 1.4ms 66.8MB 297ms 13ms node 23.6.0
javascript 1.js 559ms 2.7ms 64.5MB 543ms 13ms node 23.6.0
javascript 2.js 640ms 0.8ms 127.1MB 687ms 63ms bun 1.1.45
javascript 1.js 826ms 4.8ms 110.7MB 910ms 77ms bun 1.1.45

Input: 1000 3000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 2.js 840ms 3.3ms 72.4MB 823ms 17ms node 23.6.0
javascript 1.js 1586ms 6.0ms 71.4MB 1567ms 17ms node 23.6.0
javascript 2.js 1816ms 29ms 122.9MB 1960ms 60ms bun 1.1.45
javascript 1.js 2536ms 140ms 112.1MB 2847ms 137ms bun 1.1.45

Input: 100 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 164ms 2.5ms 61.8MB 150ms 7ms node 23.6.0
javascript 2.js 164ms 0.9ms 60.8MB 157ms 10ms node 23.6.0
javascript 1.js 323ms 3.2ms 133.9MB 347ms 83ms bun 1.1.45
javascript 2.js 359ms 16ms 126.8MB 380ms 60ms bun 1.1.45

merkletrees

Input: 17

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1-m.java 397ms 2.9ms 630.4MB 593ms 97ms graal/jvm 17.0.8
java 1.java 401ms 1.0ms 537.3MB 483ms 103ms openjdk 23
java 1.java 401ms 4.9ms 679.9MB 467ms 90ms openjdk 21
javascript 1-m.js 485ms 10ms 141.8MB 623ms 127ms bun 1.1.45
javascript 1.js 526ms 3.4ms 134.5MB 583ms 83ms node 23.6.0
java 1.java 1072ms 7.5ms 966.2MB 473ms 723ms openjdk/zgc 21

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 119ms 1.0ms 87.0MB 107ms 27ms bun 1.1.45
javascript 1.js 157ms 2.1ms 102.3MB 137ms 47ms node 23.6.0
java 1-m.java 164ms 3.1ms 207.5MB 237ms 40ms openjdk 21
java 1-m.java 164ms 2.2ms 160.1MB 243ms 37ms openjdk 23
java 1-m.java 207ms 1.6ms 255.6MB 343ms 57ms graal/jvm 17.0.8
java 1.java 432ms 23ms 343.8MB 200ms 307ms openjdk/zgc 21

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1.java 441ms 1.3ms 45.2MB 483ms 17ms openjdk 21
java 1.java 445ms 3.9ms 48.2MB 477ms 23ms openjdk 23
java 1.java 445ms 1.7ms 87.1MB 467ms 30ms graal/jvm 17.0.8
javascript 6.js 459ms 2.4ms 59.7MB 447ms 7ms node 23.6.0
java 1.java 565ms 2.0ms 44.6MB 497ms 127ms openjdk/zgc 21
javascript 6.js 658ms 0.3ms 45.6MB 653ms 7ms bun 1.1.45
java 2.java 1252ms 33ms 588.1MB 1390ms 83ms openjdk 21
java 2.java 1255ms 8.3ms 753.6MB 1367ms 107ms openjdk 23
java 2.java 3285ms 56ms 2475.9MB 1647ms 1840ms openjdk/zgc 21

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 6.js 77ms 1.0ms 59.8MB 60ms 10ms node 23.6.0
javascript 6.js 85ms 2.1ms 45.4MB 83ms 3ms bun 1.1.45
java 1.java 118ms 1.2ms 45.1MB 153ms 20ms openjdk 21
java 1.java 123ms 1.7ms 47.9MB 153ms 20ms openjdk 23
java 1.java 123ms 6.2ms 87.3MB 157ms 27ms graal/jvm 17.0.8
java 1.java 237ms 4.3ms 44.7MB 157ms 137ms openjdk/zgc 21
java 2-m.java 299ms 2.8ms 344.9MB 437ms 53ms openjdk 21
java 2-m.java 311ms 5.4ms 346.3MB 443ms 70ms openjdk 23
java 2.java 689ms 16ms 525.9MB 463ms 403ms openjdk/zgc 21

secp256k1

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 2555ms 27ms 63.2MB 2557ms 17ms node 23.6.0
javascript 1.js 2692ms 12ms 84.3MB 2700ms 53ms bun 1.1.45

Input: 500

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 675ms 1.8ms 61.9MB 673ms 20ms node 23.6.0
javascript 1.js 710ms 3.9ms 83.8MB 703ms 33ms bun 1.1.45

pidigits

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1.java 3183ms 10ms 374.6MB 3637ms 103ms graal/jvm 17.0.8
java 1.java 3692ms 33ms 412.3MB 4563ms 97ms openjdk 23
java 1.java 3696ms 87ms 425.5MB 4553ms 100ms openjdk 21
javascript 3.js 4723ms 215ms 92.1MB 4707ms 20ms node 23.6.0
java 1.java timeout 0.0ms 1870.9MB 4497ms 1297ms openjdk/zgc 21

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1.java 874ms 7.9ms 373.7MB 1197ms 107ms graal/jvm 17.0.8
java 1-m.java 1011ms 13ms 402.8MB 1770ms 103ms openjdk 23
java 1-m.java 1012ms 39ms 351.1MB 1780ms 100ms openjdk 21
javascript 3.js 1013ms 23ms 74.3MB 990ms 17ms node 23.6.0
java 1.java 2009ms 52ms 1383.0MB 1723ms 1053ms openjdk/zgc 21

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 2-m.java 1963ms 2.5ms 47.3MB 7453ms 20ms openjdk 21
java 2-m.java 1965ms 7.5ms 48.6MB 7467ms 17ms openjdk 23
java 2-m.java 2080ms 2.7ms 45.3MB 7453ms 143ms openjdk/zgc 21
javascript 6-m.js 2158ms 5.7ms 116.7MB 8230ms 53ms node 23.6.0
java 2-m.java 2480ms 17ms 98.9MB 8800ms 40ms graal/jvm 17.0.8

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 2-m.java 592ms 8.0ms 47.7MB 2083ms 13ms openjdk 21
java 2-m.java 592ms 6.7ms 48.8MB 2033ms 30ms openjdk 23
javascript 6-m.js 642ms 4.1ms 114.0MB 2290ms 50ms node 23.6.0
java 2-m.java 712ms 1.7ms 45.3MB 2087ms 133ms openjdk/zgc 21
java 2-m.java 739ms 6.2ms 98.0MB 2493ms 37ms graal/jvm 17.0.8

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 2-m.java 246ms 3.6ms 48.5MB 717ms 20ms openjdk 23
java 2-m.java 247ms 13ms 47.4MB 710ms 23ms openjdk 21
javascript 6-m.js 263ms 2.0ms 113.2MB 823ms 40ms node 23.6.0
java 2-m.java 285ms 13ms 96.7MB 827ms 40ms graal/jvm 17.0.8
java 2-m.java 355ms 6.7ms 47.3MB 680ms 137ms openjdk/zgc 21