Javascript VS Java benchmarks

Current benchmark data was generated on Sun Jul 13 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 455ms 1.0ms 575.9MB 557ms 83ms openjdk 21
java 2-m.java 469ms 4.8ms 641.2MB 673ms 113ms graal/jvm 17.0.8
java 2.java 473ms 8.9ms 642.1MB 573ms 103ms openjdk 23
javascript 1.js 1052ms 7.6ms 474.5MB 977ms 230ms node 24.4.0
javascript 1-m.js 1079ms 165ms 176.6MB 1527ms 260ms bun 1.2.18
java 2.java 1191ms 22ms 1054.4MB 577ms 773ms openjdk/zgc 21

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 98ms 1.3ms 77.8MB 77ms 27ms bun 1.2.18
java 2-m.java 125ms 0.6ms 167.1MB 157ms 33ms openjdk 21
javascript 1.js 128ms 1.6ms 81.3MB 130ms 20ms node 24.4.0
java 2.java 129ms 5.0ms 96.0MB 167ms 27ms openjdk 23
java 2-m.java 151ms 3.3ms 227.2MB 220ms 63ms graal/jvm 17.0.8
java 2.java 305ms 2.0ms 241.5MB 157ms 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 1600ms 6.3ms 189.8MB 1570ms 100ms node 24.4.0
java 1-m.java 2305ms 190ms 264.5MB 8783ms 140ms openjdk 21
java 1-m.java 2419ms 254ms 243.1MB 9207ms 137ms openjdk 23
javascript 1.js 2457ms 68ms 101.6MB 2500ms 63ms bun 1.2.18
java 1-m.java 2938ms 109ms 1226.1MB 9570ms 1070ms openjdk/zgc 21

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 157ms 1.8ms 75.4MB 143ms 23ms node 24.4.0
javascript 1.js 216ms 4.5ms 88.7MB 250ms 33ms bun 1.2.18
java 1-m.java 464ms 5.9ms 96.8MB 1527ms 67ms openjdk 23
java 1-m.java 473ms 16ms 121.6MB 1597ms 57ms openjdk 21
java 1-m.java 654ms 16ms 213.4MB 1803ms 237ms openjdk/zgc 21

edigits

Input: 250001

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 278ms 4.4ms 67.5MB 290ms 27ms node 24.4.0
javascript 1.js 518ms 1.5ms 75.6MB 490ms 23ms bun 1.2.18
java 1-m.java 555ms 15ms 273.6MB 1557ms 70ms openjdk 21
java 1-m.java 623ms 13ms 381.7MB 1183ms 123ms graal/jvm 17.0.8
java 1-m.java 641ms 58ms 267.1MB 1720ms 63ms openjdk 23
java 1-m.java 950ms 37ms 500.2MB 1577ms 403ms openjdk/zgc 21

Input: 100000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 126ms 2.6ms 63.6MB 117ms 13ms node 24.4.0
java 1-m.java 305ms 11ms 226.1MB 607ms 67ms graal/jvm 17.0.8
java 1-m.java 355ms 28ms 177.9MB 977ms 43ms openjdk 21
java 1-m.java 375ms 23ms 127.9MB 1017ms 50ms openjdk 23
java 1-m.java 508ms 21ms 215.5MB 1010ms 213ms openjdk/zgc 21
javascript 1.js 511ms 2.2ms 65.1MB 483ms 20ms bun 1.2.18

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 12ms 0.4ms 31.6MB 0ms 0ms bun 1.2.18
javascript 1.js 31ms 0.6ms 50.8MB 16ms 6ms node 24.4.0
java 1.java 62ms 2.2ms 52.9MB 66ms 18ms graal/jvm 17.0.8
java 1.java 67ms 7.0ms 43.8MB 74ms 18ms openjdk 21
java 1.java 71ms 5.3ms 44.7MB 74ms 16ms openjdk 23
java 1.java 193ms 7.2ms 42.8MB 82ms 136ms 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 245ms 9.4ms 77.8MB 127ms 323ms bun 1.2.18
javascript 1.js 2524ms 226ms 270.7MB 2467ms 1187ms node 24.4.0

Input: 500

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.bun.js 96ms 12ms 54.6MB 33ms 73ms bun 1.2.18
javascript 1.js 344ms 3.3ms 85.1MB 327ms 127ms node 24.4.0

json-serde

Input: sample 5000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 64ms 1.3ms 62.4MB 37ms 13ms bun 1.2.18
javascript 1.js 102ms 0.9ms 74.8MB 90ms 20ms node 24.4.0

Input: canada 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 352ms 0.8ms 200.9MB 317ms 83ms bun 1.2.18
javascript 1.js 575ms 2.3ms 204.0MB 600ms 110ms node 24.4.0

lru

Input: 1000 1000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 2.js 308ms 3.4ms 64.9MB 300ms 10ms node 24.4.0
javascript 1.js 572ms 4.7ms 63.7MB 557ms 10ms node 24.4.0
javascript 2.js 688ms 11ms 123.5MB 753ms 57ms bun 1.2.18
javascript 1.js 822ms 6.8ms 106.5MB 900ms 87ms bun 1.2.18

Input: 1000 3000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 2.js 837ms 7.0ms 71.6MB 820ms 17ms node 24.4.0
javascript 1.js 1623ms 6.8ms 70.0MB 1603ms 13ms node 24.4.0
javascript 2.js 1931ms 13ms 123.3MB 2110ms 67ms bun 1.2.18
javascript 1.js 2398ms 29ms 111.6MB 2653ms 207ms bun 1.2.18

Input: 100 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 2.js 163ms 0.9ms 59.3MB 157ms 10ms node 24.4.0
javascript 1.js 169ms 0.4ms 61.0MB 153ms 10ms node 24.4.0
javascript 1.js 317ms 1.9ms 130.9MB 350ms 73ms bun 1.2.18
javascript 2.js 372ms 1.1ms 125.8MB 400ms 50ms bun 1.2.18

merkletrees

Input: 17

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1.java 401ms 5.9ms 544.3MB 500ms 87ms openjdk 23
java 1.java 403ms 2.1ms 680.0MB 480ms 87ms openjdk 21
java 1-m.java 444ms 62ms 669.4MB 667ms 113ms graal/jvm 17.0.8
javascript 1-m.js 468ms 20ms 136.0MB 607ms 117ms bun 1.2.18
javascript 1.js 563ms 3.7ms 230.8MB 563ms 117ms node 24.4.0
java 1.java 1021ms 2.8ms 934.5MB 470ms 697ms openjdk/zgc 21

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 117ms 2.5ms 85.9MB 103ms 30ms bun 1.2.18
javascript 1.js 157ms 1.0ms 100.4MB 153ms 33ms node 24.4.0
java 1-m.java 164ms 3.1ms 158.5MB 237ms 43ms openjdk 23
java 1-m.java 170ms 10ms 206.6MB 237ms 47ms openjdk 21
java 1-m.java 221ms 7.1ms 253.9MB 363ms 63ms graal/jvm 17.0.8
java 1.java 411ms 7.8ms 341.9MB 223ms 267ms openjdk/zgc 21

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1.java 442ms 1.0ms 45.1MB 480ms 17ms openjdk 21
java 1.java 444ms 3.9ms 48.3MB 480ms 23ms openjdk 23
java 1.java 454ms 0.5ms 81.1MB 490ms 30ms graal/jvm 17.0.8
javascript 6.js 455ms 2.0ms 58.8MB 447ms 3ms node 24.4.0
java 1.java 563ms 6.0ms 44.7MB 483ms 133ms openjdk/zgc 21
javascript 6.js 607ms 14ms 44.8MB 610ms 0ms bun 1.2.18
java 2.java 1235ms 3.8ms 571.4MB 1363ms 87ms openjdk 21
java 2.java 1310ms 91ms 794.4MB 1433ms 93ms openjdk 23
java 2.java 3270ms 60ms 2461.0MB 1670ms 1817ms openjdk/zgc 21

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 6.js 79ms 3.2ms 58.9MB 67ms 10ms node 24.4.0
javascript 6.js 80ms 1.8ms 44.9MB 83ms 7ms bun 1.2.18
java 1.java 116ms 4.0ms 45.4MB 143ms 23ms openjdk 21
java 1.java 119ms 2.3ms 81.5MB 150ms 27ms graal/jvm 17.0.8
java 1.java 120ms 2.0ms 47.9MB 157ms 13ms openjdk 23
java 1.java 240ms 5.7ms 44.7MB 153ms 140ms openjdk/zgc 21
java 2-m.java 294ms 9.4ms 366.4MB 437ms 50ms openjdk 21
java 2-m.java 317ms 4.3ms 397.4MB 450ms 67ms openjdk 23
java 2.java 674ms 5.7ms 533.2MB 460ms 400ms openjdk/zgc 21

secp256k1

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 2515ms 10ms 62.1MB 2517ms 10ms node 24.4.0
javascript 1.js 2811ms 7.5ms 83.4MB 2830ms 50ms bun 1.2.18

Input: 500

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 672ms 3.5ms 58.8MB 680ms 7ms node 24.4.0
javascript 1.js 742ms 1.2ms 82.3MB 740ms 30ms bun 1.2.18

pidigits

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1.java 3212ms 15ms 444.6MB 3627ms 110ms graal/jvm 17.0.8
java 1.java 3669ms 54ms 426.1MB 4610ms 110ms openjdk 21
java 1.java 3752ms 19ms 501.5MB 4603ms 120ms openjdk 23
javascript 3.js 4804ms 45ms 122.6MB 4760ms 47ms node 24.4.0
java 1.java timeout 0.0ms 1758.6MB 4670ms 1183ms openjdk/zgc 21

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1.java 896ms 13ms 444.3MB 1243ms 87ms graal/jvm 17.0.8
java 1-m.java 1001ms 28ms 353.6MB 1797ms 90ms openjdk 21
java 1-m.java 1015ms 31ms 423.3MB 1787ms 93ms openjdk 23
javascript 3.js 1034ms 5.1ms 73.9MB 1010ms 17ms node 24.4.0
java 1.java 2003ms 34ms 1358.4MB 1703ms 1060ms 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 1988ms 6.6ms 47.8MB 7613ms 23ms openjdk 21
java 2-m.java 1996ms 1.7ms 48.5MB 7643ms 30ms openjdk 23
java 2-m.java 2127ms 4.4ms 45.5MB 7673ms 153ms openjdk/zgc 21
javascript 6-m.js 2178ms 17ms 118.9MB 8247ms 70ms node 24.4.0
java 2-m.java 2508ms 27ms 94.1MB 9400ms 37ms 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 602ms 2.3ms 47.5MB 2150ms 17ms openjdk 21
java 2-m.java 612ms 9.6ms 48.6MB 2137ms 20ms openjdk 23
javascript 6-m.js 654ms 3.1ms 119.7MB 2343ms 57ms node 24.4.0
java 2-m.java 737ms 8.8ms 45.3MB 2157ms 143ms openjdk/zgc 21
java 2-m.java 761ms 18ms 94.5MB 2673ms 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 253ms 12ms 47.6MB 770ms 17ms openjdk 21
java 2-m.java 255ms 4.3ms 48.5MB 763ms 20ms openjdk 23
javascript 6-m.js 273ms 2.7ms 116.3MB 840ms 53ms node 24.4.0
java 2-m.java 328ms 5.5ms 93.3MB 1020ms 40ms graal/jvm 17.0.8
java 2-m.java 381ms 12ms 45.7MB 770ms 147ms openjdk/zgc 21