Javascript VS Java benchmarks

Current benchmark data was generated on Sun Jan 29 2023, full log can be found HERE

CONTRIBUTIONS are WELCOME!

[x86_64][2 cores] Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz (Model 106)

* -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 665ms 13ms 411.6MB 690ms 77ms openjdk 20
java 2.java 706ms 38ms 602.6MB 703ms 100ms openjdk 19
java 2.java 758ms 74ms 666.2MB 807ms 170ms graal/jvm 17.0.6
java 2.java 1295ms 55ms 1100.1MB 897ms 600ms openjdk/zgc 19
javascript 1.js 1311ms 115ms 253.9MB 1557ms 67ms bun 0.5.1
javascript 1.js 3548ms 72ms 239.0MB 2617ms 1197ms node 19.5.0

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 121ms 2.4ms 101.4MB 103ms 20ms bun 0.5.1
java 2-m.java 166ms 1.5ms 166.6MB 200ms 53ms graal/jvm 17.0.6
java 2.java 169ms 16ms 108.1MB 167ms 23ms openjdk 20
javascript 1.js 170ms 5.1ms 70.0MB 153ms 20ms node 19.5.0
java 2.java 175ms 15ms 110.8MB 190ms 13ms openjdk 19
java 2.java 305ms 2.4ms 237.9MB 167ms 160ms openjdk/zgc 19

coro-prime-sieve

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 2318ms 32ms 81.3MB 2347ms 37ms node 19.5.0
java 1-m.java 3207ms 69ms 170.5MB 6133ms 77ms openjdk 19
javascript 1.js 3573ms 62ms 124.3MB 3573ms 30ms bun 0.5.1
java 1-m.java 4183ms 84ms 919.6MB 7500ms 457ms openjdk/zgc 19
java 1.java timeout 0.0ms 142.8MB 9383ms 83ms openjdk 20

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 250ms 11ms 62.5MB 210ms 13ms node 19.5.0
javascript 1.js 294ms 5.9ms 107.9MB 270ms 10ms bun 0.5.1
java 1-m.java 738ms 62ms 119.3MB 1300ms 27ms openjdk 19
java 1-m.java 846ms 120ms 113.1MB 1533ms 37ms openjdk 20
java 1-m.java 967ms 96ms 317.6MB 1563ms 157ms openjdk/zgc 19

edigits

Input: 250001

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 395ms 1.0ms 98.1MB 377ms 10ms bun 0.5.1
javascript 1.js 404ms 1.7ms 61.3MB 407ms 17ms node 19.5.0
java 1-m.java 776ms 9.5ms 203.7MB 1363ms 53ms openjdk 19
java 1-m.java 826ms 60ms 308.0MB 1477ms 63ms graal/jvm 17.0.6
java 1-m.java 827ms 80ms 206.6MB 1463ms 67ms openjdk 20
java 1-m.java 1003ms 12ms 436.3MB 1523ms 270ms openjdk/zgc 19

Input: 100000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 188ms 0.3ms 52.6MB 193ms 10ms node 19.5.0
java 1-m.java 397ms 38ms 189.7MB 653ms 47ms graal/jvm 17.0.6
javascript 1.js 415ms 0.9ms 86.8MB 393ms 17ms bun 0.5.1
java 1-m.java 425ms 35ms 115.5MB 697ms 50ms openjdk 20
java 1-m.java 444ms 27ms 117.7MB 733ms 33ms openjdk 19
java 1-m.java 520ms 3.6ms 209.2MB 740ms 130ms openjdk/zgc 19

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 15ms 1.1ms 55.5MB 0ms 0ms bun 0.5.1
javascript 1.js 43ms 0.7ms 43.1MB 30ms 2ms node 19.5.0
java 1.java 73ms 5.0ms 69.5MB 72ms 10ms graal/jvm 17.0.6
java 1.java 79ms 5.0ms 39.2MB 72ms 10ms openjdk 20
java 1.java 81ms 6.4ms 41.7MB 80ms 4ms openjdk 19
java 1.java 118ms 0.9ms 40.0MB 76ms 48ms openjdk/zgc 19

http-server

Input: 3000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.bun.js 134ms 11ms 92.4MB 80ms 50ms bun 0.5.1
javascript 1.js 3863ms 30ms 155.6MB 1723ms 377ms node 19.5.0

Input: 500

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.bun.js 92ms 8.9ms 70.9MB 20ms 27ms bun 0.5.1
javascript 1.js 368ms 5.6ms 71.7MB 370ms 57ms node 19.5.0

json-serde

Input: sample 5000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 131ms 0.9ms 89.9MB 113ms 7ms bun 0.5.1
javascript 1.js 167ms 3.7ms 74.1MB 143ms 17ms node 19.5.0

Input: canada 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 724ms 2.7ms 262.1MB 703ms 47ms bun 0.5.1
javascript 1.js 1074ms 4.5ms 282.1MB 1017ms 117ms node 19.5.0

lru

Input: 1000 1000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 2.js 379ms 5.0ms 54.5MB 367ms 3ms node 19.5.0
javascript 1.js 569ms 2.9ms 146.2MB 560ms 20ms bun 0.5.1
javascript 2.js 794ms 2.8ms 109.1MB 793ms 23ms bun 0.5.1
javascript 1.js 1035ms 3.1ms 62.2MB 1017ms 10ms node 19.5.0

Input: 1000 3000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 2.js 1011ms 4.7ms 62.0MB 997ms 10ms node 19.5.0
javascript 1.js 1591ms 8.0ms 169.9MB 1617ms 17ms bun 0.5.1
javascript 2.js 2293ms 4.9ms 121.0MB 2300ms 13ms bun 0.5.1
javascript 1.js 2977ms 2.8ms 61.6MB 2947ms 20ms node 19.5.0

Input: 100 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 2.js 207ms 4.0ms 48.5MB 197ms 3ms node 19.5.0
javascript 1.js 291ms 8.0ms 117.4MB 280ms 17ms bun 0.5.1
javascript 1.js 376ms 1.8ms 49.8MB 363ms 7ms node 19.5.0
javascript 2.js 428ms 4.2ms 100.7MB 437ms 10ms bun 0.5.1

merkletrees

Input: 17

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1.java 497ms 8.7ms 292.4MB 520ms 63ms openjdk 19
java 1.java 528ms 28ms 370.9MB 540ms 77ms openjdk 20
java 1.java 538ms 2.0ms 353.6MB 657ms 83ms graal/jvm 17.0.6
javascript 1.js 742ms 11ms 158.6MB 820ms 33ms bun 0.5.1
javascript 1.js 773ms 6.5ms 122.2MB 777ms 57ms node 19.5.0
java 1.java 975ms 42ms 771.3MB 650ms 453ms openjdk/zgc 19

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 172ms 1.9ms 108.9MB 163ms 13ms bun 0.5.1
java 1.java 224ms 6.8ms 174.4MB 240ms 30ms openjdk 19
javascript 1.js 228ms 7.2ms 90.2MB 213ms 33ms node 19.5.0
java 1.java 228ms 10ms 221.4MB 240ms 47ms openjdk 20
java 1-m.java 269ms 27ms 281.9MB 350ms 60ms graal/jvm 17.0.6
java 1.java 428ms 3.0ms 354.6MB 277ms 207ms openjdk/zgc 19

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1.java 552ms 11ms 91.5MB 587ms 23ms graal/jvm 17.0.6
java 1.java 568ms 4.1ms 41.7MB 570ms 20ms openjdk 20
java 1.java 569ms 3.5ms 42.5MB 583ms 13ms openjdk 19
javascript 6.js 603ms 4.1ms 47.2MB 590ms 7ms node 19.5.0
java 1.java 613ms 4.2ms 41.7MB 590ms 43ms openjdk/zgc 19
javascript 6.js 1010ms 1.0ms 63.9MB 1000ms 7ms bun 0.5.1
java 2.java 1893ms 20ms 560.5MB 1923ms 103ms openjdk 20
java 2.java 1917ms 37ms 504.3MB 1953ms 110ms openjdk 19
java 2.java 2583ms 5.9ms 1215.9MB 2013ms 753ms openjdk/zgc 19

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 6.js 106ms 3.3ms 47.3MB 97ms 3ms node 19.5.0
javascript 6.js 122ms 2.4ms 70.0MB 120ms 3ms bun 0.5.1
java 1.java 141ms 2.6ms 88.3MB 177ms 20ms graal/jvm 17.0.6
java 1.java 150ms 5.2ms 40.8MB 160ms 7ms openjdk 20
java 1.java 151ms 5.1ms 42.6MB 167ms 10ms openjdk 19
java 1.java 188ms 3.2ms 44.0MB 160ms 47ms openjdk/zgc 19
java 2.java 416ms 24ms 323.9MB 487ms 63ms openjdk 19
java 2.java 423ms 14ms 292.4MB 500ms 60ms openjdk 20
java 2.java 710ms 38ms 521.9MB 533ms 323ms openjdk/zgc 19

secp256k1

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 3041ms 28ms 103.8MB 3063ms 20ms bun 0.5.1
javascript 1.js 3314ms 17ms 51.9MB 3310ms 13ms node 19.5.0

Input: 500

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 784ms 3.2ms 104.0MB 787ms 13ms bun 0.5.1
javascript 1.js 875ms 5.7ms 50.0MB 877ms 0ms node 19.5.0

pidigits

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1.java 4962ms 11ms 314.2MB 5410ms 93ms graal/jvm 17.0.6
java 1.java timeout 0.0ms 270.3MB 5407ms 73ms openjdk 19
java 1.java timeout 0.0ms 292.5MB 5443ms 83ms openjdk 20
java 1.java timeout 0.0ms 1158.3MB 5100ms 633ms openjdk/zgc 19
javascript 3.js timeout 0.0ms 79.1MB 4987ms 13ms node 19.5.0

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1.java 1325ms 8.7ms 299.0MB 1697ms 70ms graal/jvm 17.0.6
java 1.java 1420ms 34ms 251.1MB 1793ms 63ms openjdk 19
java 1.java 1426ms 20ms 256.2MB 1757ms 70ms openjdk 20
javascript 3.js 1552ms 3.1ms 62.9MB 1550ms 7ms node 19.5.0
java 1.java 1990ms 61ms 1047.5MB 1943ms 610ms openjdk/zgc 19

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 6-m.js 2755ms 8.6ms 69.5MB 5193ms 17ms node 19.5.0
java 2-m.java 4292ms 31ms 91.3MB 8270ms 37ms graal/jvm 17.0.6
java 2.java timeout 0.0ms 43.8MB 9717ms 17ms openjdk 19
java 2.java timeout 0.0ms 40.4MB 9713ms 13ms openjdk 20
java 2.java timeout 0.0ms 43.7MB 9647ms 43ms openjdk/zgc 19

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 6-m.js 847ms 18ms 69.1MB 1480ms 17ms node 19.5.0
java 2-m.java 1230ms 14ms 92.6MB 2260ms 30ms graal/jvm 17.0.6
java 2-m.java 1659ms 48ms 42.4MB 3133ms 10ms openjdk 19
java 2-m.java 1774ms 175ms 43.5MB 3273ms 53ms openjdk/zgc 19
java 2-m.java 1973ms 14ms 40.9MB 3773ms 10ms openjdk 20

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 6.js 388ms 18ms 70.3MB 527ms 20ms node 19.5.0
java 2-m.java 432ms 15ms 91.2MB 733ms 20ms graal/jvm 17.0.6
java 2-m.java 579ms 39ms 42.3MB 1013ms 13ms openjdk 19
java 2-m.java 580ms 26ms 40.9MB 1030ms 13ms openjdk 20
java 2-m.java 626ms 51ms 43.4MB 1030ms 50ms openjdk/zgc 19