Javascript VS Java 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
java 2.java 450ms 3.2ms 574.3MB 543ms 87ms openjdk 21
java 2-m.java 462ms 4.6ms 646.8MB 650ms 110ms graal/jvm 17.0.8
java 2.java 462ms 4.8ms 588.2MB 563ms 97ms openjdk 23
javascript 1-m.js 939ms 14ms 247.7MB 1473ms 283ms bun 1.0.25
java 2.java 1178ms 0.9ms 1055.6MB 607ms 733ms openjdk/zgc 21
javascript 1-m.js 1395ms 30ms 261.0MB 2187ms 363ms node 21.6.1

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 85ms 3.6ms 114.9MB 70ms 17ms bun 1.0.25
java 2.java 123ms 1.1ms 166.9MB 147ms 37ms openjdk 21
java 2-m.java 125ms 1.5ms 163.2MB 157ms 33ms openjdk 23
javascript 1.js 140ms 0.6ms 87.4MB 130ms 37ms node 21.6.1
java 2-m.java 168ms 15ms 230.2MB 220ms 70ms graal/jvm 17.0.8
java 2.java 314ms 1.3ms 241.4MB 153ms 213ms openjdk/zgc 21

coro-prime-sieve

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1-m.java 1479ms 121ms 258.9MB 5493ms 127ms openjdk 23
javascript 1.js 1658ms 4.8ms 83.7MB 1777ms 50ms node 21.6.1
java 1-m.java 1911ms 174ms 261.1MB 7210ms 130ms openjdk 21
javascript 1.js 2362ms 19ms 128.2MB 2397ms 37ms bun 1.0.25
java 1-m.java 2816ms 55ms 1230.1MB 8900ms 1077ms openjdk/zgc 21

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 163ms 1.9ms 64.0MB 143ms 17ms node 21.6.1
javascript 1.js 175ms 0.4ms 120.8MB 193ms 17ms bun 1.0.25
java 1-m.java 370ms 49ms 84.9MB 1203ms 50ms openjdk 23
java 1-m.java 436ms 31ms 123.1MB 1460ms 57ms openjdk 21
java 1-m.java 668ms 28ms 216.5MB 1783ms 257ms openjdk/zgc 21

edigits

Input: 250001

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 292ms 3.6ms 58.3MB 310ms 27ms node 21.6.1
javascript 1.js 445ms 1.2ms 107.5MB 427ms 13ms bun 1.0.25
java 1-m.java 652ms 40ms 265.4MB 1723ms 73ms openjdk 23
java 1-m.java 673ms 9.3ms 264.3MB 1770ms 67ms openjdk 21
java 1-m.java 695ms 70ms 353.3MB 1313ms 137ms graal/jvm 17.0.8
java 1-m.java 969ms 31ms 521.1MB 1597ms 453ms openjdk/zgc 21

Input: 100000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 141ms 2.5ms 54.1MB 167ms 13ms node 21.6.1
java 1-m.java 320ms 17ms 241.0MB 623ms 73ms graal/jvm 17.0.8
javascript 1.js 357ms 27ms 97.4MB 340ms 13ms bun 1.0.25
java 1-m.java 360ms 30ms 179.2MB 963ms 63ms openjdk 21
java 1-m.java 372ms 19ms 173.4MB 1023ms 43ms openjdk 23
java 1-m.java 513ms 31ms 215.7MB 987ms 223ms openjdk/zgc 21

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 14ms 0.3ms 65.6MB 0ms 10ms bun 1.0.25
javascript 1.js 34ms 0.8ms 44.0MB 16ms 6ms node 21.6.1
java 1.java 66ms 3.1ms 54.7MB 64ms 24ms graal/jvm 17.0.8
java 1.java 73ms 1.9ms 43.8MB 74ms 14ms openjdk 21
java 1.java 73ms 2.7ms 43.9MB 80ms 14ms openjdk 23
java 1.java 189ms 6.4ms 42.6MB 84ms 132ms openjdk/zgc 21

http-server

Input: 3000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.bun.js 181ms 7.8ms 109.5MB 93ms 93ms bun 1.0.25
javascript 1-m.js 3227ms 733ms 217.5MB 3567ms 1320ms node 21.6.1

Input: 500

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.bun.js 127ms 11ms 81.1MB 30ms 53ms bun 1.0.25
javascript 1.js 418ms 5.4ms 71.0MB 390ms 117ms node 21.6.1

json-serde

Input: sample 5000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 83ms 2.6ms 108.5MB 67ms 7ms bun 1.0.25
javascript 1.js 119ms 1.2ms 65.0MB 90ms 30ms node 21.6.1

Input: canada 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 414ms 3.1ms 271.4MB 430ms 23ms bun 1.0.25
javascript 1.js 737ms 2.7ms 202.3MB 783ms 97ms node 21.6.1

lru

Input: 1000 1000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 2.js 315ms 1.3ms 56.2MB 310ms 13ms node 21.6.1
javascript 1.js 405ms 1.0ms 157.6MB 417ms 17ms bun 1.0.25
javascript 2.js 524ms 3.6ms 127.5MB 560ms 13ms bun 1.0.25
javascript 1.js 524ms 4.3ms 54.6MB 507ms 13ms node 21.6.1

Input: 1000 3000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 2.js 865ms 1.6ms 64.0MB 853ms 17ms node 21.6.1
javascript 1.js 1155ms 11ms 183.2MB 1197ms 37ms bun 1.0.25
javascript 1.js 1478ms 1.9ms 61.5MB 1457ms 20ms node 21.6.1
javascript 2.js 1497ms 2.9ms 124.5MB 1530ms 20ms bun 1.0.25

Input: 100 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 165ms 2.5ms 51.9MB 153ms 10ms node 21.6.1
javascript 2.js 169ms 0.2ms 50.3MB 167ms 3ms node 21.6.1
javascript 1.js 205ms 3.0ms 134.6MB 207ms 23ms bun 1.0.25
javascript 2.js 285ms 1.8ms 122.3MB 320ms 7ms bun 1.0.25

merkletrees

Input: 17

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1.java 399ms 1.6ms 680.1MB 480ms 80ms openjdk 21
java 1.java 400ms 2.6ms 658.4MB 477ms 80ms openjdk 23
java 1-m.java 411ms 5.6ms 638.2MB 593ms 120ms graal/jvm 17.0.8
javascript 1-m.js 477ms 4.1ms 169.9MB 633ms 100ms bun 1.0.25
javascript 1.js 522ms 2.3ms 123.9MB 600ms 90ms node 21.6.1
java 1.java 1027ms 7.4ms 941.0MB 473ms 707ms openjdk/zgc 21

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 105ms 1.0ms 116.9MB 100ms 13ms bun 1.0.25
java 1-m.java 160ms 2.0ms 198.3MB 237ms 33ms openjdk 23
javascript 1.js 163ms 2.8ms 90.9MB 167ms 33ms node 21.6.1
java 1-m.java 164ms 2.2ms 206.7MB 243ms 37ms openjdk 21
java 1-m.java 251ms 4.7ms 257.4MB 403ms 73ms graal/jvm 17.0.8
java 1.java 430ms 21ms 343.8MB 227ms 277ms openjdk/zgc 21

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1.java 443ms 1.2ms 47.6MB 487ms 13ms openjdk 23
java 1.java 444ms 1.9ms 45.4MB 477ms 20ms openjdk 21
java 1.java 455ms 6.6ms 86.8MB 483ms 30ms graal/jvm 17.0.8
javascript 6.js 499ms 10ms 49.9MB 483ms 7ms node 21.6.1
java 1.java 559ms 4.6ms 46.7MB 480ms 133ms openjdk/zgc 21
javascript 6.js 704ms 2.9ms 81.5MB 703ms 3ms bun 1.0.25
java 2.java 1234ms 5.9ms 597.7MB 1363ms 77ms openjdk 23
java 2.java 1238ms 9.8ms 647.8MB 1373ms 80ms openjdk 21
java 2.java 3177ms 56ms 2367.4MB 1670ms 1723ms openjdk/zgc 21

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 6.js 85ms 0.6ms 49.9MB 67ms 13ms node 21.6.1
javascript 6.js 92ms 2.7ms 81.4MB 87ms 3ms bun 1.0.25
java 1.java 119ms 1.1ms 45.5MB 147ms 23ms openjdk 21
java 1.java 120ms 0.2ms 47.8MB 153ms 20ms openjdk 23
java 1.java 126ms 5.3ms 87.5MB 157ms 27ms graal/jvm 17.0.8
java 1.java 243ms 2.9ms 46.7MB 163ms 140ms openjdk/zgc 21
java 2-m.java 295ms 2.6ms 352.8MB 433ms 50ms openjdk 23
java 2-m.java 298ms 4.2ms 362.9MB 443ms 50ms openjdk 21
java 2.java 681ms 8.7ms 528.1MB 440ms 427ms openjdk/zgc 21

secp256k1

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 2219ms 17ms 112.5MB 2240ms 30ms bun 1.0.25
javascript 1.js 2467ms 16ms 52.9MB 2470ms 10ms node 21.6.1

Input: 500

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 578ms 2.0ms 106.3MB 590ms 13ms bun 1.0.25
javascript 1.js 655ms 6.6ms 50.7MB 660ms 7ms node 21.6.1

pidigits

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1.java 3191ms 33ms 448.1MB 3637ms 107ms graal/jvm 17.0.8
java 1.java 3685ms 53ms 351.8MB 4547ms 103ms openjdk 21
java 1.java 3771ms 108ms 349.5MB 4527ms 107ms openjdk 23
java 1.java timeout 0.0ms 1824.0MB 4710ms 1153ms openjdk/zgc 21
javascript 3.js timeout 0.0ms 81.6MB 4987ms 23ms node 21.6.1

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1.java 886ms 25ms 443.5MB 1233ms 90ms graal/jvm 17.0.8
java 1-m.java 985ms 30ms 350.6MB 1777ms 103ms openjdk 21
java 1-m.java 1029ms 9.0ms 353.0MB 1767ms 87ms openjdk 23
javascript 3.js 1127ms 3.3ms 65.6MB 1113ms 23ms node 21.6.1
java 1.java 1995ms 36ms 1348.5MB 1753ms 1007ms 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 1956ms 9.0ms 48.0MB 7453ms 37ms openjdk 23
java 2-m.java 1957ms 12ms 47.8MB 7463ms 27ms openjdk 21
java 2-m.java 2081ms 13ms 45.6MB 7440ms 140ms openjdk/zgc 21
javascript 6-m.js 2120ms 26ms 92.2MB 7783ms 97ms node 21.6.1
java 2-m.java 2462ms 20ms 94.8MB 8777ms 47ms 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 583ms 3.4ms 47.7MB 2050ms 20ms openjdk 21
java 2-m.java 586ms 3.4ms 47.9MB 2070ms 20ms openjdk 23
javascript 6-m.js 636ms 17ms 91.5MB 2100ms 110ms node 21.6.1
java 2-m.java 713ms 3.2ms 45.6MB 2100ms 133ms openjdk/zgc 21
java 2-m.java 744ms 11ms 100.2MB 2513ms 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 233ms 0.9ms 47.6MB 667ms 20ms openjdk 21
java 2-m.java 243ms 5.5ms 47.9MB 727ms 23ms openjdk 23
javascript 6-m.js 260ms 4.6ms 91.2MB 737ms 90ms node 21.6.1
java 2-m.java 277ms 8.5ms 98.5MB 783ms 43ms graal/jvm 17.0.8
java 2-m.java 372ms 13ms 45.5MB 740ms 133ms openjdk/zgc 21