All Java benchmarks

Current benchmark data was generated on Thu Feb 01 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

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
2.java 450ms 3.2ms 574.3MB 543ms 87ms openjdk 21
2-m.java 462ms 4.6ms 646.8MB 650ms 110ms graal/jvm 17.0.8
2.java 462ms 4.8ms 588.2MB 563ms 97ms openjdk 23
2.java 1178ms 0.9ms 1055.6MB 607ms 733ms openjdk/zgc 21

Input: 15

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
2.java 123ms 1.1ms 166.9MB 147ms 37ms openjdk 21
2-m.java 125ms 1.5ms 163.2MB 157ms 33ms openjdk 23
2-m.java 168ms 15ms 230.2MB 220ms 70ms graal/jvm 17.0.8
2.java 314ms 1.3ms 241.4MB 153ms 213ms openjdk/zgc 21

edigits

Input: 250001

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
1-m.java 652ms 40ms 265.4MB 1723ms 73ms openjdk 23
1-m.java 673ms 9.3ms 264.3MB 1770ms 67ms openjdk 21
1-m.java 695ms 70ms 353.3MB 1313ms 137ms graal/jvm 17.0.8
1-m.java 969ms 31ms 521.1MB 1597ms 453ms openjdk/zgc 21

Input: 100000

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
1-m.java 320ms 17ms 241.0MB 623ms 73ms graal/jvm 17.0.8
1-m.java 360ms 30ms 179.2MB 963ms 63ms openjdk 21
1-m.java 372ms 19ms 173.4MB 1023ms 43ms openjdk 23
1-m.java 513ms 31ms 215.7MB 987ms 223ms openjdk/zgc 21

fannkuch-redux

Input: 11

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
1-m.java 888ms 5.5ms 97.2MB 3257ms 43ms graal/jvm 17.0.8
1-m.java 946ms 34ms 48.5MB 3513ms 23ms openjdk 21
1-m.java 989ms 11ms 49.0MB 3650ms 17ms openjdk 23
1-m.java 1010ms 36ms 47.9MB 3313ms 133ms openjdk/zgc 21

Input: 10

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
1-m.java 179ms 6.4ms 48.5MB 490ms 27ms openjdk 21
1-m.java 185ms 1.9ms 48.7MB 487ms 13ms openjdk 23
1-m.java 198ms 9.6ms 97.6MB 523ms 47ms graal/jvm 17.0.8
1-m.java 290ms 2.9ms 45.8MB 473ms 133ms openjdk/zgc 21

fasta

Input: 2500000

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
4.java 440ms 1.7ms 107.1MB 620ms 27ms graal/jvm 17.0.8
4.java 450ms 5.5ms 47.4MB 530ms 17ms openjdk 21
4.java 455ms 1.9ms 47.5MB 543ms 17ms openjdk 23
4.java 565ms 1.6ms 45.1MB 533ms 133ms openjdk/zgc 21

Input: 250000

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
4.java 119ms 4.0ms 46.5MB 167ms 7ms openjdk 23
4.java 124ms 1.1ms 46.2MB 157ms 23ms openjdk 21
4-m.java 144ms 8.0ms 99.7MB 213ms 30ms graal/jvm 17.0.8
4.java 242ms 5.6ms 43.9MB 167ms 133ms openjdk/zgc 21

helloworld

Input: QwQ

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
1.java 66ms 3.1ms 54.7MB 64ms 24ms graal/jvm 17.0.8
1.java 73ms 1.9ms 43.8MB 74ms 14ms openjdk 21
1.java 73ms 2.7ms 43.9MB 80ms 14ms openjdk 23
1.java 189ms 6.4ms 42.6MB 84ms 132ms openjdk/zgc 21

knucleotide

Input: 2500000_in

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
3-m.java 976ms 15ms 142.6MB 3320ms 40ms openjdk 23
3-m.java 1035ms 59ms 129.1MB 3537ms 67ms openjdk 21
3-m.java 1111ms 17ms 183.2MB 3750ms 77ms graal/jvm 17.0.8
3-m.java 1429ms 32ms 178.3MB 4530ms 183ms openjdk/zgc 21

Input: 250000_in

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
3-m.java 314ms 22ms 88.4MB 907ms 47ms openjdk 23
3-m.java 329ms 5.5ms 100.1MB 987ms 50ms openjdk 21
3-m.java 337ms 30ms 145.3MB 897ms 57ms graal/jvm 17.0.8
3-m.java 428ms 11ms 98.6MB 890ms 150ms openjdk/zgc 21

mandelbrot

Input: 5000

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
1b.java 1159ms 6.4ms 54.5MB 1263ms 30ms openjdk 21
1b.java 1160ms 10ms 54.8MB 1273ms 23ms openjdk 23
1b.java 1196ms 32ms 107.7MB 1377ms 40ms graal/jvm 17.0.8
1.java 1255ms 1.2ms 131.4MB 1353ms 53ms graal/jvm 17.0.8
1b.java 1269ms 25ms 52.8MB 1257ms 137ms openjdk/zgc 21
1a.java 1650ms 5.1ms 54.9MB 1750ms 20ms openjdk 21
1a.java 1665ms 3.7ms 54.7MB 1760ms 17ms openjdk 23
1a.java 1686ms 18ms 103.8MB 1813ms 33ms graal/jvm 17.0.8
1.java 1695ms 6.4ms 202.3MB 1747ms 60ms openjdk 23
1.java 1697ms 4.4ms 258.0MB 1760ms 47ms openjdk 21
1a.java 1768ms 4.0ms 51.7MB 1740ms 143ms openjdk/zgc 21
1.java 2356ms 6.1ms 864.1MB 1797ms 667ms openjdk/zgc 21
2.java timeout 0.0ms 662.0MB 5350ms 123ms openjdk 21
2.java timeout 0.0ms 718.8MB 5263ms 137ms openjdk 23
2.java timeout 0.0ms 3397.0MB 3463ms 1890ms openjdk/zgc 21

Input: 1000

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
1b-m.java 177ms 1.0ms 49.4MB 273ms 17ms openjdk 21
1b-m.java 182ms 8.4ms 49.7MB 280ms 23ms openjdk 23
1a-m.java 188ms 3.7ms 50.9MB 287ms 23ms openjdk 21
1-m.java 190ms 3.8ms 81.4MB 267ms 27ms openjdk 21
1a-m.java 194ms 8.4ms 49.9MB 270ms 30ms openjdk 23
1-m.java 195ms 5.2ms 111.3MB 287ms 50ms graal/jvm 17.0.8
1-m.java 198ms 3.6ms 77.5MB 280ms 27ms openjdk 23
1a-m.java 220ms 15ms 103.9MB 330ms 40ms graal/jvm 17.0.8
1b-m.java 240ms 24ms 105.9MB 393ms 50ms graal/jvm 17.0.8
1b.java 309ms 29ms 47.6MB 307ms 137ms openjdk/zgc 21
1a.java 310ms 4.8ms 51.0MB 290ms 137ms openjdk/zgc 21
1.java 337ms 2.2ms 114.3MB 263ms 170ms openjdk/zgc 21
2-m.java 543ms 4.9ms 575.4MB 813ms 90ms openjdk 23
2-m.java 552ms 12ms 661.2MB 837ms 87ms openjdk 21
2.java 1585ms 4.1ms 1394.5MB 830ms 1050ms openjdk/zgc 21

merkletrees

Input: 17

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
1.java 399ms 1.6ms 680.1MB 480ms 80ms openjdk 21
1.java 400ms 2.6ms 658.4MB 477ms 80ms openjdk 23
1-m.java 411ms 5.6ms 638.2MB 593ms 120ms graal/jvm 17.0.8
1.java 1027ms 7.4ms 941.0MB 473ms 707ms openjdk/zgc 21

Input: 15

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
1-m.java 160ms 2.0ms 198.3MB 237ms 33ms openjdk 23
1-m.java 164ms 2.2ms 206.7MB 243ms 37ms openjdk 21
1-m.java 251ms 4.7ms 257.4MB 403ms 73ms graal/jvm 17.0.8
1.java 430ms 21ms 343.8MB 227ms 277ms openjdk/zgc 21

nbody

Input: 5000000

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
1.java 443ms 1.2ms 47.6MB 487ms 13ms openjdk 23
1.java 444ms 1.9ms 45.4MB 477ms 20ms openjdk 21
1.java 455ms 6.6ms 86.8MB 483ms 30ms graal/jvm 17.0.8
1.java 559ms 4.6ms 46.7MB 480ms 133ms openjdk/zgc 21
2.java 1234ms 5.9ms 597.7MB 1363ms 77ms openjdk 23
2.java 1238ms 9.8ms 647.8MB 1373ms 80ms openjdk 21
2.java 3177ms 56ms 2367.4MB 1670ms 1723ms openjdk/zgc 21

Input: 500000

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
1.java 119ms 1.1ms 45.5MB 147ms 23ms openjdk 21
1.java 120ms 0.2ms 47.8MB 153ms 20ms openjdk 23
1.java 126ms 5.3ms 87.5MB 157ms 27ms graal/jvm 17.0.8
1.java 243ms 2.9ms 46.7MB 163ms 140ms openjdk/zgc 21
2-m.java 295ms 2.6ms 352.8MB 433ms 50ms openjdk 23
2-m.java 298ms 4.2ms 362.9MB 443ms 50ms openjdk 21
2.java 681ms 8.7ms 528.1MB 440ms 427ms openjdk/zgc 21

nsieve

Input: 12

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
1.java 397ms 1.3ms 117.2MB 443ms 20ms openjdk 23
1.java 403ms 8.1ms 114.9MB 447ms 30ms openjdk 21
1.java 581ms 2.7ms 114.6MB 473ms 177ms openjdk/zgc 21
1-m.java 638ms 11ms 234.0MB 917ms 77ms graal/jvm 17.0.8
2.java 779ms 1.6ms 59.3MB 827ms 23ms openjdk 23
2.java 781ms 0.5ms 57.3MB 837ms 23ms openjdk 21
2.java 849ms 14ms 52.9MB 773ms 150ms openjdk/zgc 21
2-m.java 1353ms 17ms 264.4MB 2427ms 100ms graal/jvm 17.0.8

Input: 10

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
1.java 158ms 3.3ms 67.3MB 207ms 20ms openjdk 23
1.java 162ms 8.7ms 64.7MB 203ms 27ms openjdk 21
1-m.java 214ms 20ms 137.5MB 287ms 60ms graal/jvm 17.0.8
2.java 257ms 0.4ms 49.6MB 293ms 30ms openjdk 23
2.java 257ms 3.8ms 49.8MB 313ms 23ms openjdk 21
1.java 284ms 4.8ms 63.3MB 210ms 143ms openjdk/zgc 21
2.java 365ms 2.0ms 49.3MB 307ms 137ms openjdk/zgc 21
2-m.java 582ms 94ms 203.7MB 1050ms 63ms graal/jvm 17.0.8

pidigits

Input: 8000

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
1.java 3191ms 33ms 448.1MB 3637ms 107ms graal/jvm 17.0.8
1.java 3685ms 53ms 351.8MB 4547ms 103ms openjdk 21
1.java 3771ms 108ms 349.5MB 4527ms 107ms openjdk 23
1.java timeout 0.0ms 1824.0MB 4710ms 1153ms openjdk/zgc 21

Input: 4000

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
1.java 886ms 25ms 443.5MB 1233ms 90ms graal/jvm 17.0.8
1-m.java 985ms 30ms 350.6MB 1777ms 103ms openjdk 21
1-m.java 1029ms 9.0ms 353.0MB 1767ms 87ms openjdk 23
1.java 1995ms 36ms 1348.5MB 1753ms 1007ms 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 411.4MB 5437ms 90ms graal/jvm 17.0.8
3.java timeout 0.0ms 303.5MB 5317ms 57ms openjdk 21
3.java timeout 0.0ms 303.4MB 5307ms 70ms openjdk 23
3.java timeout 0.0ms 469.6MB 4963ms 307ms openjdk/zgc 21

Input: 250000_in

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
3-m.java 783ms 12ms 181.0MB 1160ms 67ms graal/jvm 17.0.8
3-m.java 809ms 17ms 130.9MB 1203ms 37ms openjdk 21
3-m.java 810ms 3.6ms 130.8MB 1213ms 43ms openjdk 23
3.java 967ms 17ms 133.5MB 1183ms 177ms openjdk/zgc 21

spectral-norm

Input: 8000

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
2-m.java 1956ms 9.0ms 48.0MB 7453ms 37ms openjdk 23
2-m.java 1957ms 12ms 47.8MB 7463ms 27ms openjdk 21
2-m.java 2081ms 13ms 45.6MB 7440ms 140ms openjdk/zgc 21
2-m.java 2462ms 20ms 94.8MB 8777ms 47ms graal/jvm 17.0.8

Input: 4000

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
2-m.java 583ms 3.4ms 47.7MB 2050ms 20ms openjdk 21
2-m.java 586ms 3.4ms 47.9MB 2070ms 20ms openjdk 23
2-m.java 713ms 3.2ms 45.6MB 2100ms 133ms openjdk/zgc 21
2-m.java 744ms 11ms 100.2MB 2513ms 37ms graal/jvm 17.0.8

Input: 2000

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
2-m.java 233ms 0.9ms 47.6MB 667ms 20ms openjdk 21
2-m.java 243ms 5.5ms 47.9MB 727ms 23ms openjdk 23
2-m.java 277ms 8.5ms 98.5MB 783ms 43ms graal/jvm 17.0.8
2-m.java 372ms 13ms 45.5MB 740ms 133ms openjdk/zgc 21

coro-prime-sieve

Input: 4000

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
1-m.java 1479ms 121ms 258.9MB 5493ms 127ms openjdk 23
1-m.java 1911ms 174ms 261.1MB 7210ms 130ms openjdk 21
1-m.java 2816ms 55ms 1230.1MB 8900ms 1077ms openjdk/zgc 21

Input: 1000

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
1-m.java 370ms 49ms 84.9MB 1203ms 50ms openjdk 23
1-m.java 436ms 31ms 123.1MB 1460ms 57ms openjdk 21
1-m.java 668ms 28ms 216.5MB 1783ms 257ms openjdk/zgc 21