All Java benchmarks

Current benchmark data was generated on Mon May 19 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

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
2.java 458ms 6.7ms 574.1MB 563ms 77ms openjdk 21
2-m.java 466ms 7.3ms 643.0MB 657ms 117ms graal/jvm 17.0.8
2.java 468ms 2.3ms 638.7MB 577ms 87ms openjdk 23
2.java 1195ms 46ms 1101.7MB 577ms 787ms openjdk/zgc 21

Input: 15

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
2.java 128ms 1.6ms 167.0MB 157ms 33ms openjdk 21
2.java 133ms 5.7ms 96.5MB 163ms 30ms openjdk 23
2-m.java 152ms 7.0ms 215.4MB 227ms 57ms graal/jvm 17.0.8
2.java 308ms 9.8ms 241.5MB 170ms 193ms openjdk/zgc 21

edigits

Input: 250001

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
1-m.java 603ms 8.3ms 352.7MB 1180ms 97ms graal/jvm 17.0.8
1-m.java 611ms 69ms 263.9MB 1673ms 67ms openjdk 21
1-m.java 642ms 55ms 231.5MB 1707ms 73ms openjdk 23
1-m.java 949ms 34ms 528.2MB 1633ms 413ms openjdk/zgc 21

Input: 100000

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
1-m.java 305ms 0.9ms 225.8MB 607ms 63ms graal/jvm 17.0.8
1-m.java 330ms 3.5ms 176.0MB 903ms 50ms openjdk 21
1-m.java 385ms 22ms 110.7MB 1043ms 50ms openjdk 23
1-m.java 509ms 21ms 215.5MB 1010ms 207ms openjdk/zgc 21

fannkuch-redux

Input: 11

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
1-m.java 898ms 11ms 96.1MB 3307ms 40ms graal/jvm 17.0.8
1-m.java 988ms 11ms 48.3MB 3657ms 23ms openjdk 21
1-m.java 990ms 2.9ms 50.2MB 3640ms 27ms openjdk 23
1-m.java 1042ms 3.9ms 45.7MB 3403ms 137ms openjdk/zgc 21

Input: 10

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
1-m.java 180ms 7.7ms 48.6MB 490ms 20ms openjdk 21
1-m.java 198ms 0.9ms 50.3MB 520ms 23ms openjdk 23
1-m.java 210ms 5.5ms 95.7MB 587ms 40ms graal/jvm 17.0.8
1-m.java 311ms 8.8ms 45.9MB 520ms 140ms openjdk/zgc 21

fasta

Input: 2500000

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
4.java 447ms 1.7ms 100.5MB 630ms 40ms graal/jvm 17.0.8
4.java 454ms 3.1ms 47.5MB 533ms 20ms openjdk 21
4.java 471ms 9.6ms 49.1MB 567ms 23ms openjdk 23
4.java 572ms 6.6ms 45.1MB 543ms 137ms openjdk/zgc 21

Input: 250000

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
4.java 122ms 6.1ms 46.5MB 160ms 17ms openjdk 21
4-m.java 130ms 1.9ms 47.6MB 180ms 17ms openjdk 23
4-m.java 133ms 5.7ms 94.2MB 190ms 33ms graal/jvm 17.0.8
4.java 250ms 3.4ms 44.0MB 170ms 140ms openjdk/zgc 21

helloworld

Input: QwQ

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
1.java 65ms 2.3ms 53.1MB 68ms 20ms graal/jvm 17.0.8
1.java 70ms 6.5ms 44.7MB 80ms 14ms openjdk 23
1.java 70ms 4.4ms 43.9MB 76ms 18ms openjdk 21
1.java 194ms 7.5ms 43.0MB 86ms 142ms openjdk/zgc 21

knucleotide

Input: 2500000_in

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
3-m.java 1066ms 62ms 154.5MB 3653ms 53ms openjdk 23
3-m.java 1090ms 16ms 125.0MB 3730ms 50ms openjdk 21
3-m.java 1113ms 11ms 179.2MB 3827ms 60ms graal/jvm 17.0.8
3-m.java 1376ms 12ms 179.0MB 4323ms 207ms openjdk/zgc 21

Input: 250000_in

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
3-m.java 327ms 29ms 99.7MB 970ms 37ms openjdk 21
3-m.java 336ms 17ms 104.1MB 997ms 37ms openjdk 23
3-m.java 347ms 30ms 135.3MB 967ms 57ms graal/jvm 17.0.8
3-m.java 440ms 9.5ms 98.5MB 930ms 167ms openjdk/zgc 21

mandelbrot

Input: 5000

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
1b.java 1150ms 9.6ms 55.1MB 1253ms 17ms openjdk 23
1b.java 1165ms 24ms 54.5MB 1277ms 20ms openjdk 21
1b.java 1185ms 21ms 110.0MB 1397ms 40ms graal/jvm 17.0.8
1.java 1259ms 14ms 133.7MB 1377ms 50ms graal/jvm 17.0.8
1b.java 1282ms 17ms 51.0MB 1270ms 143ms openjdk/zgc 21
1a.java 1658ms 5.0ms 55.8MB 1757ms 27ms openjdk 23
1a.java 1665ms 7.5ms 55.0MB 1773ms 17ms openjdk 21
1a.java 1696ms 7.7ms 102.1MB 1813ms 43ms graal/jvm 17.0.8
1.java 1710ms 5.3ms 266.5MB 1773ms 47ms openjdk 21
1.java 1716ms 3.0ms 317.2MB 1780ms 53ms openjdk 23
1a.java 1786ms 3.6ms 52.1MB 1770ms 140ms openjdk/zgc 21
1.java 2371ms 11ms 852.6MB 1813ms 670ms openjdk/zgc 21
2.java timeout 0.0ms 707.1MB 5343ms 120ms openjdk 21
2.java timeout 0.0ms 756.4MB 5333ms 133ms openjdk 23
2.java timeout 0.0ms 3298.5MB 3430ms 1950ms openjdk/zgc 21

Input: 1000

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
1b-m.java 183ms 6.1ms 49.6MB 290ms 27ms openjdk 21
1b-m.java 186ms 5.5ms 51.5MB 297ms 20ms openjdk 23
1a-m.java 191ms 4.9ms 50.8MB 290ms 23ms openjdk 21
1a-m.java 193ms 3.0ms 52.9MB 290ms 23ms openjdk 23
1-m.java 197ms 3.9ms 87.1MB 273ms 30ms openjdk 23
1-m.java 198ms 3.0ms 81.7MB 280ms 23ms openjdk 21
1-m.java 201ms 9.5ms 112.5MB 310ms 43ms graal/jvm 17.0.8
1a-m.java 208ms 1.3ms 98.4MB 320ms 33ms graal/jvm 17.0.8
1b-m.java 226ms 12ms 100.1MB 390ms 37ms graal/jvm 17.0.8
1b.java 307ms 6.4ms 47.4MB 300ms 140ms openjdk/zgc 21
1a.java 319ms 1.1ms 48.9MB 300ms 147ms openjdk/zgc 21
1.java 337ms 3.1ms 114.3MB 260ms 163ms openjdk/zgc 21
2-m.java 560ms 7.9ms 661.3MB 860ms 100ms openjdk 21
2-m.java 587ms 3.2ms 785.9MB 887ms 97ms openjdk 23
2.java 1620ms 55ms 1396.0MB 853ms 1077ms openjdk/zgc 21

merkletrees

Input: 17

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
1.java 404ms 4.9ms 534.3MB 500ms 93ms openjdk 23
1.java 406ms 4.3ms 679.8MB 490ms 90ms openjdk 21
1-m.java 408ms 8.7ms 626.3MB 617ms 97ms graal/jvm 17.0.8
1.java 1026ms 1.9ms 933.9MB 487ms 690ms openjdk/zgc 21

Input: 15

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
1-m.java 167ms 1.6ms 206.1MB 240ms 43ms openjdk 21
1-m.java 168ms 1.1ms 158.3MB 247ms 40ms openjdk 23
1-m.java 216ms 12ms 253.2MB 367ms 60ms graal/jvm 17.0.8
1.java 419ms 8.2ms 341.9MB 217ms 280ms openjdk/zgc 21

nbody

Input: 5000000

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
1.java 445ms 0.4ms 45.0MB 490ms 13ms openjdk 21
1.java 446ms 3.8ms 48.4MB 477ms 20ms openjdk 23
1.java 447ms 2.3ms 82.2MB 477ms 27ms graal/jvm 17.0.8
1.java 577ms 2.1ms 44.8MB 497ms 140ms openjdk/zgc 21
2.java 1252ms 5.6ms 639.9MB 1390ms 87ms openjdk 21
2.java 1277ms 19ms 794.0MB 1390ms 113ms openjdk 23
2.java 3274ms 53ms 2445.6MB 1653ms 1830ms openjdk/zgc 21

Input: 500000

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
1.java 120ms 4.0ms 48.0MB 153ms 20ms openjdk 23
1.java 122ms 2.1ms 44.9MB 167ms 13ms openjdk 21
1-m.java 123ms 4.2ms 81.5MB 157ms 33ms graal/jvm 17.0.8
1.java 249ms 3.8ms 44.9MB 157ms 147ms openjdk/zgc 21
2-m.java 302ms 22ms 344.8MB 437ms 53ms openjdk 21
2-m.java 313ms 7.2ms 400.0MB 443ms 70ms openjdk 23
2.java 684ms 17ms 532.7MB 467ms 407ms openjdk/zgc 21

nsieve

Input: 12

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
1.java 410ms 3.5ms 115.8MB 463ms 27ms openjdk 21
1.java 424ms 3.9ms 118.5MB 467ms 27ms openjdk 23
1.java 587ms 6.0ms 112.8MB 493ms 163ms openjdk/zgc 21
1-m.java 644ms 25ms 236.7MB 933ms 77ms graal/jvm 17.0.8
2.java 782ms 3.1ms 56.9MB 837ms 17ms openjdk 21
2.java 786ms 9.6ms 60.5MB 840ms 20ms openjdk 23
2.java 847ms 3.9ms 53.2MB 777ms 143ms openjdk/zgc 21
2-m.java 1339ms 8.3ms 234.5MB 2410ms 100ms graal/jvm 17.0.8

Input: 10

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
1.java 155ms 2.3ms 68.1MB 200ms 23ms openjdk 23
1.java 158ms 3.5ms 64.7MB 210ms 20ms openjdk 21
1-m.java 210ms 6.9ms 124.8MB 297ms 47ms graal/jvm 17.0.8
2.java 262ms 3.1ms 50.5MB 310ms 23ms openjdk 23
2.java 263ms 1.2ms 50.0MB 327ms 20ms openjdk 21
1.java 286ms 4.1ms 61.5MB 203ms 150ms openjdk/zgc 21
2.java 370ms 2.8ms 47.7MB 303ms 147ms openjdk/zgc 21
2-m.java 470ms 6.2ms 199.2MB 830ms 63ms graal/jvm 17.0.8

pidigits

Input: 8000

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
1.java 3209ms 4.7ms 445.5MB 3633ms 100ms graal/jvm 17.0.8
1.java 3722ms 68ms 433.0MB 4600ms 107ms openjdk 21
1.java 3750ms 35ms 408.8MB 4670ms 107ms openjdk 23
1.java timeout 0.0ms 1830.0MB 4663ms 1203ms openjdk/zgc 21

Input: 4000

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
1.java 888ms 5.7ms 448.3MB 1230ms 87ms graal/jvm 17.0.8
1-m.java 985ms 9.3ms 423.2MB 1833ms 87ms openjdk 21
1-m.java 1005ms 39ms 488.4MB 1760ms 110ms openjdk 23
1.java 1983ms 5.7ms 1312.1MB 1770ms 1033ms openjdk/zgc 21

regex-redux

Input: 2500000_in

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
3.java timeout 0.0ms 399.2MB 5400ms 90ms graal/jvm 17.0.8
3.java timeout 0.0ms 302.2MB 5327ms 60ms openjdk 21
3.java timeout 0.0ms 305.0MB 5323ms 63ms openjdk 23
3.java timeout 0.0ms 468.6MB 4970ms 293ms openjdk/zgc 21

Input: 250000_in

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
3-m.java 772ms 8.0ms 176.1MB 1150ms 57ms graal/jvm 17.0.8
3-m.java 798ms 9.3ms 128.8MB 1187ms 37ms openjdk 21
3-m.java 805ms 18ms 132.4MB 1233ms 43ms openjdk 23
3.java 985ms 10ms 133.8MB 1160ms 190ms openjdk/zgc 21

spectral-norm

Input: 8000

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
2-m.java 1987ms 7.3ms 47.4MB 7587ms 27ms openjdk 21
2-m.java 2001ms 11ms 48.8MB 7653ms 27ms openjdk 23
2-m.java 2120ms 12ms 45.2MB 7633ms 150ms openjdk/zgc 21
2-m.java 2521ms 48ms 94.9MB 9407ms 50ms graal/jvm 17.0.8

Input: 4000

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
2-m.java 605ms 4.2ms 47.7MB 2140ms 20ms openjdk 21
2-m.java 617ms 2.8ms 48.8MB 2187ms 20ms openjdk 23
2-m.java 732ms 8.1ms 45.3MB 2153ms 147ms openjdk/zgc 21
2-m.java 776ms 4.7ms 95.1MB 2737ms 43ms graal/jvm 17.0.8

Input: 2000

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
2-m.java 248ms 5.2ms 47.7MB 723ms 20ms openjdk 21
2-m.java 267ms 4.0ms 48.4MB 787ms 20ms openjdk 23
2-m.java 323ms 9.1ms 94.0MB 987ms 43ms graal/jvm 17.0.8
2-m.java 387ms 8.0ms 45.5MB 783ms 147ms openjdk/zgc 21

coro-prime-sieve

Input: 4000

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
1-m.java 2237ms 158ms 258.9MB 8497ms 143ms openjdk 21
1-m.java 2494ms 200ms 242.9MB 9503ms 130ms openjdk 23
1-m.java 2940ms 99ms 1203.7MB 9563ms 1067ms openjdk/zgc 21

Input: 1000

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
1-m.java 467ms 39ms 121.7MB 1563ms 73ms openjdk 21
1-m.java 480ms 45ms 94.9MB 1580ms 57ms openjdk 23
1-m.java 668ms 8.4ms 212.9MB 1767ms 267ms openjdk/zgc 21