Java VS Zig benchmarks

Current benchmark data was generated on Wed Feb 08 2023, full log can be found HERE

CONTRIBUTIONS are WELCOME!

[x86_64][2 cores] Intel(R) Xeon(R) Platinum 8171M CPU @ 2.60GHz (Model 85)

* -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 801ms 7.2ms 410.2MB 787ms 150ms openjdk 19
java 2.java 840ms 20ms 365.5MB 1003ms 133ms graal/jvm 17.0.6
java 2.java 855ms 43ms 607.0MB 807ms 183ms openjdk 20
java 2.java 1671ms 35ms 1188.8MB 1013ms 860ms openjdk/zgc 19
zig 1.zig 2850ms 12ms 49.1MB 2820ms 13ms zig 0.11.0-dev.1580+a5b34a61a

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 2.java 201ms 6.2ms 107.5MB 197ms 33ms openjdk 20
java 2.java 222ms 16ms 163.9MB 250ms 60ms graal/jvm 17.0.6
java 2.java 223ms 26ms 111.0MB 197ms 37ms openjdk 19
zig 1.zig 237ms 2.6ms 7.0MB 220ms 0ms zig 0.11.0-dev.1580+a5b34a61a
java 2.java 383ms 9.9ms 238.2MB 210ms 197ms openjdk/zgc 19

edigits

Input: 250001

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1-m.java 865ms 18ms 199.9MB 1483ms 100ms openjdk 19
java 1-m.java 884ms 13ms 206.4MB 1543ms 77ms openjdk 20
java 1-m.java 925ms 47ms 251.2MB 1603ms 100ms graal/jvm 17.0.6
java 1-m.java 1201ms 4.1ms 447.1MB 1683ms 393ms openjdk/zgc 19
zig 1.zig timeout 0.0ms 2.6MB 4983ms 0ms zig 0.11.0-dev.1580+a5b34a61a

Input: 100000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1-m.java 489ms 35ms 184.8MB 777ms 87ms graal/jvm 17.0.6
java 1-m.java 490ms 4.6ms 116.0MB 793ms 50ms openjdk 19
java 1-m.java 527ms 41ms 130.6MB 837ms 67ms openjdk 20
java 1-m.java 655ms 73ms 222.2MB 933ms 170ms openjdk/zgc 19
zig 1.zig 975ms 29ms 2.0MB 950ms 7ms zig 0.11.0-dev.1580+a5b34a61a

fannkuch-redux

Input: 11

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 2-m.zig 1401ms 16ms 1.1MB 2713ms 0ms zig 0.11.0-dev.1580+a5b34a61a
zig 3-i.zig 1699ms 3.5ms 1.0MB 1687ms 0ms zig 0.11.0-dev.1580+a5b34a61a
java 1-m.java 1774ms 119ms 93.2MB 3357ms 30ms graal/jvm 17.0.6
java 1-m.java 1803ms 54ms 43.7MB 3437ms 17ms openjdk 19
java 1-m.java 1850ms 41ms 40.5MB 3520ms 20ms openjdk 20
java 1-m.java 1957ms 64ms 43.8MB 3607ms 77ms openjdk/zgc 19
zig 2.zig 2854ms 1.2ms 1.0MB 2843ms 0ms zig 0.11.0-dev.1580+a5b34a61a
zig 1.zig 3856ms 30ms 1.0MB 3847ms 0ms zig 0.11.0-dev.1580+a5b34a61a

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 2-m.zig 134ms 1.0ms 1.1MB 233ms 0ms zig 0.11.0-dev.1580+a5b34a61a
zig 3-i.zig 145ms 0.7ms 1.0MB 130ms 0ms zig 0.11.0-dev.1580+a5b34a61a
zig 2.zig 242ms 0.2ms 1.0MB 230ms 0ms zig 0.11.0-dev.1580+a5b34a61a
java 1-m.java 294ms 13ms 43.5MB 470ms 13ms openjdk 19
java 1-m.java 297ms 6.3ms 40.7MB 457ms 23ms openjdk 20
java 1-m.java 311ms 15ms 91.7MB 490ms 43ms graal/jvm 17.0.6
zig 1.zig 323ms 0.7ms 1.0MB 310ms 0ms zig 0.11.0-dev.1580+a5b34a61a
java 1-m.java 349ms 2.4ms 43.5MB 463ms 73ms openjdk/zgc 19

fasta

Input: 2500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 1.zig 165ms 2.4ms 1.0MB 153ms 0ms zig 0.11.0-dev.1580+a5b34a61a
java 4.java 554ms 15ms 40.1MB 633ms 23ms openjdk 20
java 4.java 564ms 18ms 41.4MB 653ms 13ms openjdk 19
java 4.java 621ms 18ms 42.0MB 637ms 83ms openjdk/zgc 19
java 4.java 646ms 8.9ms 101.0MB 870ms 50ms graal/jvm 17.0.6

Input: 250000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 1.zig 22ms 1.6ms 1.0MB 10ms 0ms zig 0.11.0-dev.1580+a5b34a61a
java 4.java 168ms 9.5ms 41.0MB 187ms 20ms openjdk 19
java 4.java 175ms 13ms 39.5MB 180ms 27ms openjdk 20
java 4.java 175ms 5.0ms 87.4MB 200ms 40ms graal/jvm 17.0.6
java 4.java 233ms 7.1ms 41.9MB 190ms 77ms openjdk/zgc 19

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 1.zig 2.1ms 0.7ms 0.9MB 0ms 0ms zig 0.11.0-dev.1580+a5b34a61a
java 1.java 92ms 4.3ms 65.3MB 88ms 14ms graal/jvm 17.0.6
java 1.java 93ms 5.9ms 42.0MB 84ms 14ms openjdk 19
java 1.java 96ms 8.2ms 39.1MB 92ms 16ms openjdk 20
java 1.java 158ms 14ms 41.4MB 84ms 82ms openjdk/zgc 19

knucleotide

Input: 2500000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 1.zig 1282ms 8.4ms 25.8MB 1240ms 27ms zig 0.11.0-dev.1580+a5b34a61a
java 3-m.java 1707ms 43ms 114.5MB 3113ms 50ms openjdk 20
java 3-m.java 1746ms 44ms 116.1MB 3173ms 53ms openjdk 19
java 3-m.java 1925ms 87ms 169.4MB 3510ms 77ms graal/jvm 17.0.6
java 3-m.java 2294ms 86ms 173.8MB 4033ms 183ms openjdk/zgc 19

Input: 250000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 1.zig 144ms 1.9ms 7.5MB 127ms 0ms zig 0.11.0-dev.1580+a5b34a61a
java 3-m.java 522ms 16ms 87.2MB 857ms 53ms openjdk 20
java 3-m.java 535ms 20ms 89.6MB 880ms 50ms openjdk 19
java 3-m.java 574ms 23ms 95.3MB 840ms 113ms openjdk/zgc 19
java 3-m.java 779ms 189ms 196.9MB 1327ms 83ms graal/jvm 17.0.6

mandelbrot

Input: 5000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 1.zig 457ms 14ms 4.2MB 443ms 0ms zig 0.11.0-dev.1580+a5b34a61a
java 1b.java 1780ms 4.4ms 49.7MB 1863ms 27ms openjdk 19
java 1b.java 1821ms 5.4ms 47.2MB 1957ms 20ms openjdk 20
java 1b.java 1846ms 20ms 47.4MB 1880ms 93ms openjdk/zgc 19
java 1b.java 1906ms 42ms 109.9MB 2140ms 30ms graal/jvm 17.0.6
java 1a.java 2153ms 5.7ms 47.2MB 2237ms 23ms openjdk 20
java 1a.java 2167ms 23ms 50.3MB 2267ms 17ms openjdk 19
java 1a.java 2184ms 25ms 47.5MB 2187ms 80ms openjdk/zgc 19
java 1a.java 2198ms 8.5ms 100.4MB 2303ms 43ms graal/jvm 17.0.6
java 1.java 2344ms 39ms 202.5MB 2337ms 90ms openjdk 19
java 1.java 2433ms 6.6ms 136.8MB 2523ms 53ms graal/jvm 17.0.6
java 1.java 2533ms 189ms 197.6MB 2570ms 90ms openjdk 20
java 1.java 2792ms 11ms 581.4MB 2397ms 507ms openjdk/zgc 19
java 2.java timeout 0.0ms 547.5MB 5130ms 190ms openjdk 19
java 2.java timeout 0.0ms 622.3MB 5130ms 200ms openjdk 20
java 2.java timeout 0.0ms 1703.0MB 4407ms 1023ms openjdk/zgc 19

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 1.zig 23ms 1.3ms 1.0MB 10ms 0ms zig 0.11.0-dev.1580+a5b34a61a
java 1b.java 254ms 4.7ms 42.7MB 330ms 27ms openjdk 20
java 1.java 269ms 7.9ms 95.4MB 293ms 33ms openjdk 19
java 1a.java 271ms 10ms 47.1MB 333ms 27ms openjdk 19
java 1.java 272ms 7.2ms 96.3MB 293ms 43ms openjdk 20
java 1b.java 274ms 17ms 46.2MB 370ms 20ms openjdk 19
java 1a.java 278ms 5.8ms 43.0MB 363ms 23ms openjdk 20
java 1.java 289ms 8.7ms 100.2MB 377ms 33ms graal/jvm 17.0.6
java 1a.java 294ms 29ms 96.8MB 377ms 23ms graal/jvm 17.0.6
java 1a.java 308ms 6.5ms 44.3MB 290ms 80ms openjdk/zgc 19
java 1b.java 329ms 14ms 44.1MB 363ms 80ms openjdk/zgc 19
java 1b-m.java 335ms 40ms 99.2MB 490ms 40ms graal/jvm 17.0.6
java 1.java 357ms 10ms 110.9MB 293ms 130ms openjdk/zgc 19
java 2.java 929ms 43ms 557.5MB 1113ms 163ms openjdk 19
java 2.java 942ms 50ms 623.7MB 1097ms 203ms openjdk 20
java 2.java 1818ms 149ms 1243.8MB 1233ms 897ms openjdk/zgc 19

merkletrees

Input: 17

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1.java 638ms 8.3ms 288.6MB 647ms 103ms openjdk 20
java 1.java 654ms 15ms 368.8MB 683ms 97ms openjdk 19
java 1.java 677ms 7.2ms 345.2MB 840ms 140ms graal/jvm 17.0.6
java 1.java 1201ms 20ms 760.4MB 800ms 567ms openjdk/zgc 19
zig 1.zig 1335ms 3.4ms 41.1MB 1300ms 13ms zig 0.11.0-dev.1580+a5b34a61a

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1.java 262ms 3.6ms 173.9MB 293ms 40ms openjdk 19
zig 1.zig 269ms 1.4ms 11.0MB 253ms 0ms zig 0.11.0-dev.1580+a5b34a61a
java 1.java 286ms 5.3ms 222.6MB 287ms 67ms openjdk 20
java 1-m.java 345ms 9.1ms 280.6MB 463ms 87ms graal/jvm 17.0.6
java 1.java 513ms 64ms 321.3MB 320ms 237ms openjdk/zgc 19

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 2.zig 308ms 5.8ms 1.1MB 293ms 0ms zig 0.11.0-dev.1580+a5b34a61a
zig 1.zig 462ms 6.7ms 1.0MB 453ms 0ms zig 0.11.0-dev.1580+a5b34a61a
java 1.java 688ms 13ms 89.8MB 730ms 17ms graal/jvm 17.0.6
java 1.java 755ms 7.1ms 40.4MB 757ms 27ms openjdk 20
java 1.java 764ms 8.1ms 43.4MB 763ms 23ms openjdk 19
java 1.java 846ms 17ms 44.4MB 793ms 80ms openjdk/zgc 19
java 2.java 2324ms 28ms 656.4MB 2277ms 213ms openjdk 20
java 2.java 2338ms 11ms 550.4MB 2307ms 183ms openjdk 19
java 2.java 3688ms 40ms 1609.1MB 2637ms 1277ms openjdk/zgc 19

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 2.zig 35ms 0.6ms 1.0MB 27ms 0ms zig 0.11.0-dev.1580+a5b34a61a
zig 1.zig 50ms 1.5ms 1.0MB 40ms 0ms zig 0.11.0-dev.1580+a5b34a61a
java 1.java 180ms 4.4ms 89.8MB 207ms 33ms graal/jvm 17.0.6
java 1.java 184ms 8.6ms 40.5MB 193ms 17ms openjdk 20
java 1.java 188ms 4.0ms 43.6MB 197ms 17ms openjdk 19
java 1.java 247ms 5.2ms 42.4MB 193ms 83ms openjdk/zgc 19
java 2.java 511ms 7.9ms 354.7MB 550ms 113ms openjdk 20
java 2.java 520ms 20ms 355.3MB 567ms 123ms openjdk 19
java 2.java 890ms 59ms 506.8MB 663ms 393ms openjdk/zgc 19

nsieve

Input: 12

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 2.zig 439ms 0.8ms 6.0MB 423ms 0ms zig 0.11.0-dev.1580+a5b34a61a
zig 1.zig 943ms 42ms 40.1MB 917ms 10ms zig 0.11.0-dev.1580+a5b34a61a
java 2.java 1197ms 8.4ms 50.4MB 1237ms 20ms openjdk 20
java 1.java 1211ms 11ms 84.4MB 1233ms 30ms openjdk 19
java 1.java 1227ms 46ms 84.6MB 1247ms 40ms openjdk 20
java 2.java 1260ms 8.6ms 53.6MB 1313ms 13ms openjdk 19
java 2.java 1326ms 4.8ms 52.5MB 1300ms 87ms openjdk/zgc 19
java 1.java 1425ms 29ms 110.6MB 1363ms 120ms openjdk/zgc 19
java 1.java 1684ms 26ms 239.6MB 2347ms 127ms graal/jvm 17.0.6
java 2-m.java 2194ms 21ms 206.3MB 3857ms 123ms graal/jvm 17.0.6

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 2.zig 97ms 2.8ms 2.1MB 87ms 0ms zig 0.11.0-dev.1580+a5b34a61a
zig 1.zig 128ms 1.0ms 10.9MB 110ms 0ms zig 0.11.0-dev.1580+a5b34a61a
java 1.java 277ms 2.7ms 58.4MB 297ms 27ms openjdk 20
java 1.java 285ms 2.3ms 59.6MB 293ms 37ms openjdk 19
java 1.java 363ms 18ms 60.8MB 327ms 97ms openjdk/zgc 19
java 2.java 378ms 7.9ms 45.1MB 420ms 13ms openjdk 20
java 2.java 401ms 11ms 50.0MB 427ms 23ms openjdk 19
java 1.java 401ms 13ms 121.8MB 540ms 60ms graal/jvm 17.0.6
java 2.java 465ms 9.2ms 44.2MB 430ms 87ms openjdk/zgc 19
java 2-m.java 786ms 5.5ms 148.8MB 1357ms 80ms graal/jvm 17.0.6

pidigits

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 1.zig 2406ms 1.7ms 2.3MB 2373ms 13ms zig 0.11.0-dev.1580+a5b34a61a
java 1.java timeout 0.0ms 300.8MB 5513ms 140ms graal/jvm 17.0.6
java 1.java timeout 0.0ms 294.4MB 5513ms 110ms openjdk 19
java 1.java timeout 0.0ms 316.4MB 5490ms 117ms openjdk 20
java 1.java timeout 0.0ms 1383.4MB 4503ms 940ms openjdk/zgc 19

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 1.zig 558ms 10ms 1.8MB 547ms 0ms zig 0.11.0-dev.1580+a5b34a61a
java 1.java 1642ms 22ms 304.2MB 2007ms 103ms openjdk 19
java 1.java 1642ms 26ms 291.3MB 1927ms 90ms openjdk 20
java 1.java 1766ms 11ms 315.8MB 2257ms 120ms graal/jvm 17.0.6
java 1.java 2312ms 22ms 1045.8MB 1943ms 863ms openjdk/zgc 19

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 251.6MB 5393ms 100ms graal/jvm 17.0.6
java 3.java timeout 0.0ms 208.2MB 5320ms 77ms openjdk 19
java 3.java timeout 0.0ms 204.2MB 5303ms 73ms openjdk 20
java 3.java timeout 0.0ms 335.7MB 4947ms 290ms openjdk/zgc 19

Input: 250000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 3.java 1186ms 15ms 111.3MB 1563ms 53ms openjdk 19
java 3.java 1196ms 24ms 169.4MB 1687ms 60ms graal/jvm 17.0.6
java 3.java 1201ms 11ms 112.5MB 1597ms 50ms openjdk 20
java 3.java 1337ms 14ms 159.1MB 1487ms 187ms openjdk/zgc 19

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 2-m.zig 1088ms 3.9ms 1.2MB 2083ms 0ms zig 0.11.0-dev.1580+a5b34a61a
zig 2.zig 2072ms 6.8ms 1.0MB 2063ms 0ms zig 0.11.0-dev.1580+a5b34a61a
zig 1.zig 4631ms 11ms 1.0MB 4617ms 0ms zig 0.11.0-dev.1580+a5b34a61a
java 2.java timeout 0.0ms 91.1MB 9620ms 57ms graal/jvm 17.0.6
java 2.java timeout 0.0ms 44.6MB 9673ms 23ms openjdk 19
java 2.java timeout 0.0ms 40.7MB 9670ms 23ms openjdk 20
java 2.java timeout 0.0ms 44.1MB 9580ms 63ms openjdk/zgc 19

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 2-m.zig 284ms 2.0ms 1.2MB 510ms 0ms zig 0.11.0-dev.1580+a5b34a61a
zig 2.zig 525ms 10ms 1.0MB 513ms 0ms zig 0.11.0-dev.1580+a5b34a61a
zig 1.zig 1156ms 3.2ms 1.0MB 1143ms 0ms zig 0.11.0-dev.1580+a5b34a61a
java 2-m.java 1423ms 72ms 91.9MB 2637ms 30ms graal/jvm 17.0.6
java 2-m.java 2021ms 51ms 41.9MB 3780ms 30ms openjdk 19
java 2-m.java 2159ms 141ms 43.9MB 3967ms 80ms openjdk/zgc 19
java 2-m.java 2484ms 111ms 40.8MB 4717ms 20ms openjdk 20

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 2-m.zig 79ms 1.5ms 1.1MB 127ms 0ms zig 0.11.0-dev.1580+a5b34a61a
zig 2.zig 136ms 2.1ms 1.6MB 127ms 0ms zig 0.11.0-dev.1580+a5b34a61a
zig 1.zig 294ms 0.5ms 1.0MB 280ms 0ms zig 0.11.0-dev.1580+a5b34a61a
java 2-m.java 505ms 14ms 93.3MB 827ms 33ms graal/jvm 17.0.6
java 2-m.java 685ms 36ms 43.9MB 1207ms 23ms openjdk 19
java 2-m.java 719ms 39ms 42.2MB 1160ms 83ms openjdk/zgc 19
java 2-m.java 801ms 105ms 41.1MB 1323ms 20ms openjdk 20

coro-prime-sieve

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1-m.java 3271ms 2834ms 943.0MB 8797ms 650ms openjdk/zgc 19
java 1-m.java 3881ms 18ms 198.6MB 7340ms 137ms openjdk 19
java 1.java timeout 0.0ms 139.8MB 9550ms 133ms openjdk 20

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1-m.java 874ms 43ms 113.0MB 1520ms 67ms openjdk 19
java 1-m.java 936ms 180ms 114.9MB 1630ms 63ms openjdk 20
java 1-m.java 1171ms 18ms 316.0MB 1860ms 250ms openjdk/zgc 19