Java VS Typescript benchmarks

Current benchmark data was generated on Thu Jul 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
java 2.java 467ms 10ms 574.1MB 560ms 93ms openjdk 21
java 2.java 482ms 8.0ms 614.5MB 597ms 97ms openjdk 23
java 2-m.java 490ms 24ms 642.8MB 657ms 147ms graal/jvm 17.0.8
typescript 1.ts 1047ms 5.2ms 397.8MB 1010ms 193ms deno 2.4.2
java 2.java 1164ms 12ms 1038.5MB 583ms 750ms openjdk/zgc 21

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 2.java 124ms 9.7ms 97.1MB 157ms 27ms openjdk 23
java 2.java 127ms 1.8ms 169.1MB 157ms 30ms openjdk 21
typescript 1.ts 130ms 3.8ms 80.7MB 133ms 20ms deno 2.4.2
java 2-m.java 158ms 2.6ms 224.2MB 233ms 60ms graal/jvm 17.0.8
java 2.java 310ms 4.2ms 241.5MB 163ms 203ms openjdk/zgc 21

edigits

Input: 250001

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1-m.java 581ms 12ms 279.9MB 1600ms 70ms openjdk 21
java 1-m.java 609ms 6.2ms 352.4MB 1180ms 103ms graal/jvm 17.0.8
java 1-m.java 612ms 54ms 236.7MB 1663ms 73ms openjdk 23
java 1-m.java 959ms 37ms 526.9MB 1643ms 403ms openjdk/zgc 21

Input: 100000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1-m.java 320ms 35ms 226.8MB 627ms 70ms graal/jvm 17.0.8
java 1-m.java 352ms 43ms 195.6MB 950ms 57ms openjdk 21
java 1-m.java 367ms 18ms 125.4MB 1000ms 57ms openjdk 23
java 1-m.java 529ms 29ms 213.2MB 1033ms 217ms openjdk/zgc 21

fannkuch-redux

Input: 11

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1-m.java 898ms 14ms 95.6MB 3310ms 40ms graal/jvm 17.0.8
java 1-m.java 953ms 32ms 48.4MB 3513ms 27ms openjdk 21
java 1-m.java 984ms 12ms 50.2MB 3630ms 23ms openjdk 23
java 1-m.java 1030ms 8.5ms 45.8MB 3393ms 137ms openjdk/zgc 21

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1-m.java 181ms 3.0ms 48.3MB 500ms 23ms openjdk 21
java 1-m.java 194ms 5.4ms 50.1MB 510ms 20ms openjdk 23
java 1-m.java 212ms 5.5ms 95.8MB 593ms 43ms graal/jvm 17.0.8
java 1-m.java 301ms 3.6ms 46.0MB 497ms 143ms openjdk/zgc 21

fasta

Input: 2500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 4-m.java 449ms 8.5ms 101.6MB 633ms 43ms graal/jvm 17.0.8
java 4.java 454ms 6.2ms 49.0MB 543ms 20ms openjdk 23
java 4.java 455ms 7.4ms 47.7MB 553ms 17ms openjdk 21
java 4.java 577ms 4.1ms 45.3MB 553ms 137ms openjdk/zgc 21
typescript 1.ts 2079ms 26ms 59.4MB 1963ms 120ms deno 2.4.2

Input: 250000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 4-m.java 123ms 4.9ms 46.6MB 170ms 17ms openjdk 21
java 4.java 124ms 3.8ms 48.0MB 170ms 13ms openjdk 23
java 4-m.java 129ms 11ms 91.8MB 180ms 33ms graal/jvm 17.0.8
typescript 1.ts 240ms 4.3ms 59.2MB 223ms 23ms deno 2.4.2
java 4.java 243ms 7.9ms 43.8MB 157ms 140ms openjdk/zgc 21

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 1.ts 28ms 1.1ms 45.9MB 10ms 6ms deno 2.4.2
java 1.java 64ms 2.2ms 52.9MB 70ms 20ms graal/jvm 17.0.8
java 1.java 70ms 6.0ms 44.7MB 76ms 16ms openjdk 23
java 1.java 73ms 2.0ms 43.8MB 74ms 20ms openjdk 21
java 1.java 188ms 4.1ms 43.2MB 82ms 136ms openjdk/zgc 21

knucleotide

Input: 2500000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 3-m.java 1085ms 42ms 129.7MB 3697ms 47ms openjdk 21
java 3-m.java 1095ms 8.7ms 156.1MB 3740ms 57ms openjdk 23
java 3-m.java 1123ms 24ms 180.1MB 3847ms 63ms graal/jvm 17.0.8
java 3-m.java 1433ms 31ms 179.2MB 4513ms 217ms openjdk/zgc 21

Input: 250000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 3-m.java 321ms 27ms 95.4MB 930ms 33ms openjdk 21
java 3-m.java 328ms 7.5ms 86.0MB 953ms 40ms openjdk 23
java 3-m.java 330ms 1.4ms 135.9MB 900ms 57ms graal/jvm 17.0.8
java 3-m.java 442ms 5.8ms 100.1MB 933ms 167ms openjdk/zgc 21

mandelbrot

Input: 5000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1b.java 1158ms 11ms 54.3MB 1267ms 20ms openjdk 21
java 1b.java 1158ms 12ms 55.6MB 1263ms 17ms openjdk 23
java 1b.java 1187ms 12ms 109.9MB 1383ms 47ms graal/jvm 17.0.8
java 1.java 1252ms 4.7ms 138.0MB 1357ms 50ms graal/jvm 17.0.8
java 1b.java 1284ms 7.5ms 51.2MB 1270ms 143ms openjdk/zgc 21
java 1a.java 1660ms 3.1ms 56.5MB 1763ms 17ms openjdk 23
java 1a.java 1666ms 14ms 55.2MB 1767ms 23ms openjdk 21
java 1a.java 1680ms 4.1ms 102.4MB 1793ms 40ms graal/jvm 17.0.8
java 1.java 1707ms 3.8ms 202.5MB 1787ms 33ms openjdk 21
java 1.java 1718ms 7.0ms 315.7MB 1770ms 60ms openjdk 23
java 1a.java 1781ms 5.0ms 51.4MB 1757ms 140ms openjdk/zgc 21
java 1.java 2361ms 7.8ms 857.1MB 1803ms 663ms openjdk/zgc 21
java 2.java timeout 0.0ms 670.6MB 5280ms 117ms openjdk 21
java 2.java timeout 0.0ms 886.9MB 5317ms 140ms openjdk 23
java 2.java timeout 0.0ms 3370.5MB 3433ms 1933ms openjdk/zgc 21

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1b-m.java 178ms 10ms 49.5MB 287ms 20ms openjdk 21
java 1b-m.java 186ms 4.6ms 51.5MB 300ms 20ms openjdk 23
java 1a-m.java 189ms 3.1ms 51.9MB 290ms 23ms openjdk 23
java 1-m.java 194ms 2.8ms 82.1MB 267ms 27ms openjdk 21
java 1-m.java 196ms 6.4ms 87.3MB 270ms 33ms openjdk 23
java 1-m.java 198ms 6.6ms 112.3MB 300ms 50ms graal/jvm 17.0.8
java 1a-m.java 200ms 5.3ms 50.7MB 310ms 23ms openjdk 21
java 1a-m.java 211ms 3.3ms 98.6MB 320ms 37ms graal/jvm 17.0.8
java 1b-m.java 246ms 16ms 102.2MB 423ms 47ms graal/jvm 17.0.8
java 1b.java 305ms 3.3ms 47.6MB 300ms 140ms openjdk/zgc 21
java 1a.java 314ms 0.7ms 48.1MB 297ms 143ms openjdk/zgc 21
java 1.java 333ms 11ms 114.3MB 267ms 160ms openjdk/zgc 21
java 2-m.java 566ms 9.2ms 659.0MB 843ms 93ms openjdk 21
java 2-m.java 574ms 7.2ms 833.9MB 840ms 113ms openjdk 23
java 2.java 1595ms 3.0ms 1358.2MB 857ms 1047ms openjdk/zgc 21

merkletrees

Input: 17

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1.java 403ms 3.7ms 538.3MB 493ms 97ms openjdk 23
java 1.java 419ms 5.8ms 678.2MB 483ms 103ms openjdk 21
java 1-m.java 427ms 23ms 637.7MB 607ms 137ms graal/jvm 17.0.8
typescript 1.ts 577ms 7.4ms 229.1MB 583ms 117ms deno 2.4.2
java 1.java 1043ms 30ms 962.6MB 467ms 717ms openjdk/zgc 21

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 1.ts 158ms 3.8ms 99.7MB 157ms 33ms deno 2.4.2
java 1-m.java 164ms 3.0ms 159.4MB 237ms 43ms openjdk 23
java 1-m.java 169ms 2.5ms 206.0MB 230ms 50ms openjdk 21
java 1-m.java 212ms 11ms 254.4MB 347ms 70ms graal/jvm 17.0.8
java 1.java 413ms 7.7ms 341.8MB 217ms 277ms openjdk/zgc 21

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1.java 444ms 0.6ms 45.2MB 483ms 17ms openjdk 21
java 1.java 447ms 0.7ms 47.7MB 477ms 13ms openjdk 23
java 1.java 447ms 5.0ms 81.4MB 477ms 30ms graal/jvm 17.0.8
typescript 6.ts 465ms 3.8ms 58.0MB 447ms 10ms deno 2.4.2
java 1.java 572ms 3.7ms 44.7MB 493ms 140ms openjdk/zgc 21
java 2.java 1244ms 20ms 606.7MB 1363ms 87ms openjdk 21
java 2.java 1262ms 3.5ms 766.4MB 1373ms 110ms openjdk 23
java 2.java 3247ms 12ms 2328.0MB 1667ms 1787ms openjdk/zgc 21

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 6.ts 78ms 1.5ms 58.1MB 60ms 10ms deno 2.4.2
java 1.java 118ms 3.1ms 45.7MB 150ms 20ms openjdk 21
java 1-m.java 123ms 1.2ms 81.5MB 153ms 33ms graal/jvm 17.0.8
java 1.java 125ms 2.6ms 48.1MB 163ms 20ms openjdk 23
java 1.java 242ms 5.6ms 44.8MB 153ms 143ms openjdk/zgc 21
java 2-m.java 299ms 6.1ms 371.3MB 443ms 53ms openjdk 21
java 2-m.java 304ms 5.0ms 400.0MB 430ms 73ms openjdk 23
java 2.java 681ms 16ms 531.1MB 473ms 403ms openjdk/zgc 21

nsieve

Input: 12

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1.java 406ms 0.6ms 118.3MB 450ms 20ms openjdk 23
java 1.java 410ms 4.4ms 115.7MB 467ms 23ms openjdk 21
java 1.java 580ms 15ms 112.5MB 487ms 167ms openjdk/zgc 21
java 1-m.java 642ms 15ms 230.6MB 930ms 73ms graal/jvm 17.0.8
java 2.java 789ms 3.2ms 60.2MB 837ms 17ms openjdk 23
java 2.java 789ms 14ms 57.3MB 843ms 17ms openjdk 21
java 2.java 853ms 0.7ms 53.1MB 783ms 147ms openjdk/zgc 21
java 2-m.java 1382ms 44ms 281.8MB 2483ms 103ms graal/jvm 17.0.8

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1.java 152ms 6.3ms 68.3MB 200ms 20ms openjdk 23
java 1.java 158ms 1.2ms 64.7MB 203ms 20ms openjdk 21
java 1-m.java 209ms 9.5ms 137.2MB 290ms 47ms graal/jvm 17.0.8
java 2.java 261ms 0.2ms 50.5MB 310ms 23ms openjdk 23
java 2.java 262ms 2.4ms 50.0MB 327ms 20ms openjdk 21
java 1.java 292ms 0.5ms 61.4MB 207ms 153ms openjdk/zgc 21
java 2.java 376ms 1.5ms 47.4MB 303ms 143ms openjdk/zgc 21
java 2-m.java 522ms 73ms 149.7MB 937ms 60ms graal/jvm 17.0.8

pidigits

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1.java 3255ms 3.2ms 443.5MB 3677ms 110ms graal/jvm 17.0.8
java 1.java 3749ms 36ms 431.4MB 4663ms 113ms openjdk 21
java 1.java 3811ms 14ms 432.3MB 4623ms 120ms openjdk 23
java 1.java timeout 0.0ms 1904.3MB 4737ms 1153ms openjdk/zgc 21
typescript 3.ts timeout 0.0ms 135.4MB 4990ms 50ms deno 2.4.2

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1-m.java 901ms 3.0ms 441.7MB 1270ms 93ms graal/jvm 17.0.8
java 1-m.java 1002ms 34ms 421.9MB 1797ms 97ms openjdk 21
java 1-m.java 1005ms 13ms 435.3MB 1803ms 107ms openjdk 23
typescript 3.ts 1193ms 8.8ms 80.2MB 1127ms 83ms deno 2.4.2
java 1.java 2055ms 14ms 1339.4MB 1730ms 1090ms openjdk/zgc 21

regex-redux

Input: 2500000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 3.java timeout 0.0ms 395.5MB 5400ms 83ms graal/jvm 17.0.8
java 3.java timeout 0.0ms 302.3MB 5337ms 60ms openjdk 21
java 3.java timeout 0.0ms 304.9MB 5327ms 60ms openjdk 23
java 3.java timeout 0.0ms 468.6MB 4963ms 300ms openjdk/zgc 21

Input: 250000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 3-m.java 780ms 15ms 176.2MB 1167ms 50ms graal/jvm 17.0.8
java 3-m.java 809ms 7.9ms 132.5MB 1247ms 37ms openjdk 23
java 3-m.java 827ms 31ms 129.7MB 1240ms 33ms openjdk 21
java 3.java 964ms 7.0ms 134.3MB 1160ms 190ms 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 1989ms 6.0ms 47.5MB 7610ms 27ms openjdk 21
java 2-m.java 2003ms 3.3ms 48.8MB 7670ms 30ms openjdk 23
java 2-m.java 2130ms 11ms 45.6MB 7617ms 150ms openjdk/zgc 21
java 2-m.java 2519ms 12ms 94.9MB 9443ms 43ms graal/jvm 17.0.8
typescript 7.ts 4069ms 13ms 57.6MB 4053ms 10ms deno 2.4.2

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 2-m.java 605ms 4.4ms 47.7MB 2143ms 20ms openjdk 21
java 2-m.java 610ms 12ms 48.8MB 2173ms 20ms openjdk 23
java 2-m.java 723ms 12ms 45.4MB 2133ms 147ms openjdk/zgc 21
java 2-m.java 772ms 6.4ms 95.1MB 2720ms 43ms graal/jvm 17.0.8
typescript 7.ts 1039ms 4.6ms 57.6MB 1023ms 10ms deno 2.4.2

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 2-m.java 252ms 0.8ms 47.2MB 763ms 20ms openjdk 21
java 2-m.java 259ms 4.4ms 48.9MB 783ms 23ms openjdk 23
typescript 7.ts 286ms 2.4ms 55.8MB 270ms 7ms deno 2.4.2
java 2-m.java 308ms 10ms 95.0MB 930ms 33ms graal/jvm 17.0.8
java 2-m.java 379ms 7.6ms 45.1MB 753ms 147ms openjdk/zgc 21

coro-prime-sieve

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 1.ts 1228ms 12ms 122.6MB 1213ms 60ms deno 2.4.2
java 1-m.java 2058ms 240ms 261.7MB 7780ms 137ms openjdk 21
java 1-m.java 2357ms 112ms 243.2MB 8950ms 133ms openjdk 23
java 1-m.java 2848ms 215ms 1230.8MB 9240ms 1087ms openjdk/zgc 21

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 1.ts 145ms 2.1ms 73.0MB 123ms 20ms deno 2.4.2
java 1-m.java 442ms 9.8ms 122.8MB 1457ms 63ms openjdk 21
java 1-m.java 449ms 6.6ms 94.4MB 1477ms 53ms openjdk 23
java 1-m.java 652ms 4.9ms 212.8MB 1733ms 267ms openjdk/zgc 21