Typescript VS Java benchmarks

Current benchmark data was generated on Tue Dec 31 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 428ms 6.0ms 574.2MB 503ms 83ms openjdk 21
java 2-m.java 448ms 5.4ms 648.6MB 620ms 120ms graal/jvm 17.0.8
java 2.java 451ms 8.7ms 650.1MB 557ms 87ms openjdk 23
java 2.java 1140ms 6.2ms 1085.8MB 540ms 753ms openjdk/zgc 21
typescript 1-m.ts 1206ms 14ms 253.0MB 2110ms 143ms deno 2.1.4

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 2-m.java 117ms 3.3ms 167.6MB 147ms 30ms openjdk 21
typescript 1.ts 120ms 0.9ms 82.3MB 117ms 30ms deno 2.1.4
java 2.java 122ms 6.2ms 98.2MB 143ms 33ms openjdk 23
java 2-m.java 153ms 9.8ms 226.4MB 223ms 60ms graal/jvm 17.0.8
java 2.java 289ms 1.8ms 241.5MB 147ms 187ms 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 1274ms 2.7ms 90.8MB 1303ms 50ms deno 2.1.4
java 1-m.java 1839ms 107ms 260.2MB 6950ms 100ms openjdk 21
java 1-m.java 2281ms 118ms 242.8MB 8683ms 107ms openjdk 23
java 1-m.java 2455ms 149ms 1194.8MB 7670ms 997ms openjdk/zgc 21

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 1.ts 138ms 0.7ms 75.2MB 113ms 23ms deno 2.1.4
java 1-m.java 393ms 19ms 91.0MB 1263ms 60ms openjdk 23
java 1-m.java 413ms 23ms 131.0MB 1357ms 63ms openjdk 21
java 1-m.java 622ms 34ms 224.1MB 1667ms 243ms openjdk/zgc 21

fasta

Input: 2500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 4.java 415ms 6.6ms 107.3MB 563ms 50ms graal/jvm 17.0.8
java 4.java 431ms 15ms 47.5MB 517ms 20ms openjdk 21
java 4.java 439ms 9.7ms 49.3MB 523ms 17ms openjdk 23
java 4.java 541ms 2.5ms 44.9MB 507ms 133ms openjdk/zgc 21
typescript 1.ts 1978ms 8.0ms 62.4MB 1837ms 150ms deno 2.1.4

Input: 250000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 4.java 116ms 0.7ms 46.4MB 150ms 17ms openjdk 21
java 4.java 117ms 0.9ms 47.5MB 153ms 17ms openjdk 23
java 4-m.java 132ms 7.0ms 97.4MB 180ms 37ms graal/jvm 17.0.8
java 4.java 226ms 9.1ms 43.9MB 153ms 130ms openjdk/zgc 21
typescript 1.ts 230ms 6.3ms 61.2MB 203ms 27ms deno 2.1.4

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 1.ts 25ms 0.5ms 48.1MB 8ms 2ms deno 2.1.4
java 1.java 61ms 1.3ms 58.6MB 60ms 20ms graal/jvm 17.0.8
java 1.java 69ms 2.9ms 44.7MB 66ms 14ms openjdk 23
java 1.java 69ms 1.0ms 43.8MB 72ms 10ms openjdk 21
java 1.java 174ms 5.3ms 44.5MB 80ms 116ms openjdk/zgc 21

http-server

Input: 3000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 1-m.ts 631ms 5.4ms 223.6MB 570ms 397ms deno 2.1.4
typescript 2.ts 648ms 18ms 224.1MB 550ms 417ms deno 2.1.4
typescript 1-http2.ts 808ms 14ms 220.5MB 747ms 370ms deno 2.1.4
typescript 2-tls.ts 1346ms 20ms 239.6MB 1180ms 480ms deno 2.1.4

Input: 500

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 1.ts 170ms 6.5ms 97.6MB 127ms 87ms deno 2.1.4
typescript 2.ts 171ms 2.2ms 99.4MB 137ms 83ms deno 2.1.4
typescript 1-http2.ts 216ms 9.2ms 98.7MB 163ms 93ms deno 2.1.4
typescript 2-tls.ts 351ms 16ms 103.8MB 277ms 110ms deno 2.1.4

json-serde

Input: sample 5000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 1.ts 154ms 2.3ms 96.9MB 140ms 37ms deno 2.1.4

Input: canada 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 1.ts 1150ms 14ms 430.0MB 1270ms 127ms deno 2.1.4

lru

Input: 1000 1000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 2.ts 254ms 5.4ms 64.3MB 240ms 13ms deno 2.1.4
typescript 1.ts 533ms 1.8ms 65.4MB 510ms 17ms deno 2.1.4

Input: 1000 3000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 2.ts 696ms 42ms 73.5MB 687ms 17ms deno 2.1.4
typescript 1.ts 1535ms 25ms 72.8MB 1520ms 10ms deno 2.1.4

Input: 100 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 2.ts 139ms 1.4ms 60.6MB 130ms 10ms deno 2.1.4
typescript 1.ts 157ms 0.6ms 62.6MB 147ms 7ms deno 2.1.4

merkletrees

Input: 17

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1.java 377ms 8.2ms 679.9MB 450ms 77ms openjdk 21
java 1.java 383ms 9.9ms 546.0MB 480ms 80ms openjdk 23
java 1-m.java 408ms 27ms 589.2MB 630ms 77ms graal/jvm 17.0.8
typescript 1.ts 492ms 6.5ms 134.8MB 563ms 63ms deno 2.1.4
java 1.java 1004ms 16ms 1000.0MB 447ms 697ms openjdk/zgc 21

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 1.ts 148ms 3.8ms 100.9MB 150ms 30ms deno 2.1.4
java 1-m.java 153ms 0.5ms 206.4MB 210ms 50ms openjdk 21
java 1-m.java 154ms 0.8ms 158.8MB 213ms 47ms openjdk 23
java 1-m.java 210ms 8.6ms 260.7MB 360ms 47ms graal/jvm 17.0.8
java 1.java 386ms 10ms 343.0MB 210ms 247ms openjdk/zgc 21

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1.java 417ms 2.4ms 45.2MB 450ms 13ms openjdk 21
java 1.java 420ms 6.1ms 48.2MB 450ms 20ms openjdk 23
java 1.java 429ms 7.0ms 85.0MB 457ms 27ms graal/jvm 17.0.8
typescript 6.ts 449ms 12ms 57.7MB 433ms 3ms deno 2.1.4
java 1.java 530ms 6.4ms 46.5MB 450ms 130ms openjdk/zgc 21
java 2.java 1166ms 4.4ms 571.8MB 1293ms 77ms openjdk 21
java 2.java 1187ms 9.7ms 717.8MB 1287ms 90ms openjdk 23
java 2.java 3101ms 57ms 2431.6MB 1560ms 1743ms openjdk/zgc 21

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 6.ts 73ms 0.2ms 59.1MB 60ms 7ms deno 2.1.4
java 1.java 111ms 2.5ms 45.2MB 137ms 20ms openjdk 21
java 1.java 112ms 0.7ms 87.3MB 130ms 30ms graal/jvm 17.0.8
java 1.java 114ms 1.2ms 48.5MB 140ms 20ms openjdk 23
java 1.java 230ms 5.1ms 46.5MB 150ms 133ms openjdk/zgc 21
java 2-m.java 289ms 6.3ms 348.4MB 407ms 70ms openjdk 23
java 2-m.java 293ms 18ms 355.0MB 440ms 30ms openjdk 21
java 2.java 658ms 2.3ms 536.9MB 437ms 403ms openjdk/zgc 21

pidigits

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1.java 3054ms 20ms 378.6MB 3497ms 93ms graal/jvm 17.0.8
java 1.java 3512ms 55ms 352.2MB 4263ms 100ms openjdk 21
java 1.java 3516ms 17ms 467.6MB 4333ms 110ms openjdk 23
java 1.java 4911ms 83ms 1847.1MB 4407ms 1287ms openjdk/zgc 21
typescript 3.ts timeout 0.0ms 100.8MB 4980ms 33ms deno 2.1.4

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1-m.java 862ms 30ms 376.3MB 1213ms 93ms graal/jvm 17.0.8
java 1-m.java 946ms 37ms 351.6MB 1657ms 93ms openjdk 21
java 1-m.java 959ms 18ms 387.9MB 1673ms 93ms openjdk 23
typescript 3.ts 1225ms 9.4ms 78.9MB 1187ms 57ms deno 2.1.4
java 1.java 1914ms 12ms 1374.3MB 1617ms 980ms openjdk/zgc 21

secp256k1

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 1.ts 1814ms 2.8ms 61.3MB 1817ms 17ms deno 2.1.4

Input: 500

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 1.ts 483ms 4.2ms 60.9MB 483ms 13ms deno 2.1.4

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 2-m.java 1867ms 20ms 47.6MB 7143ms 20ms openjdk 21
java 2-m.java 1877ms 26ms 49.0MB 7130ms 20ms openjdk 23
java 2-m.java 1981ms 11ms 45.4MB 7137ms 137ms openjdk/zgc 21
java 2-m.java 2318ms 11ms 100.9MB 8233ms 47ms graal/jvm 17.0.8
typescript 7.ts 3867ms 25ms 60.0MB 3850ms 10ms deno 2.1.4

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 2-m.java 557ms 2.8ms 48.4MB 1953ms 27ms openjdk 23
java 2-m.java 558ms 2.6ms 47.5MB 1963ms 23ms openjdk 21
java 2-m.java 676ms 7.0ms 45.6MB 1957ms 140ms openjdk/zgc 21
java 2-m.java 688ms 5.7ms 98.9MB 2293ms 57ms graal/jvm 17.0.8
typescript 7.ts 977ms 8.7ms 60.4MB 957ms 17ms deno 2.1.4

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 2-m.java 229ms 5.7ms 48.4MB 670ms 23ms openjdk 23
java 2-m.java 238ms 14ms 47.6MB 693ms 20ms openjdk 21
typescript 7.ts 272ms 3.6ms 57.4MB 253ms 10ms deno 2.1.4
java 2-m.java 281ms 23ms 101.8MB 823ms 40ms graal/jvm 17.0.8
java 2-m.java 346ms 3.4ms 47.1MB 667ms 133ms openjdk/zgc 21