Java VS C benchmarks

Current benchmark data was generated on Wed Sep 28 2022, full log can be found HERE

CONTRIBUTIONS are WELCOME!

[x86_64][2 cores] Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz (Model 106)

* -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 661ms 5.8ms 413.5MB 667ms 97ms openjdk 20
java 2.java 688ms 18ms 682.2MB 753ms 163ms graal/jvm 17.0.4
java 2.java 717ms 66ms 602.1MB 687ms 130ms openjdk 19
java 2.java 1278ms 15ms 1070.2MB 913ms 580ms openjdk/zgc 19

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 2.java 166ms 4.3ms 111.0MB 163ms 27ms openjdk 19
java 2.java 166ms 5.0ms 111.8MB 163ms 30ms openjdk 20
java 2.java 181ms 10ms 167.7MB 220ms 47ms graal/jvm 17.0.4
java 2.java 298ms 6.1ms 240.4MB 190ms 147ms openjdk/zgc 19

edigits

Input: 250001

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1-m.java 753ms 59ms 283.7MB 1303ms 90ms graal/jvm 17.0.4
java 1-m.java 803ms 75ms 188.5MB 1420ms 53ms openjdk 19
java 1-m.java 836ms 139ms 189.2MB 1493ms 60ms openjdk 20
java 1-m.java 983ms 2.1ms 443.0MB 1460ms 290ms openjdk/zgc 19

Input: 100000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1-m.java 389ms 27ms 188.2MB 637ms 50ms graal/jvm 17.0.4
java 1-m.java 434ms 17ms 117.6MB 720ms 37ms openjdk 20
java 1-m.java 437ms 13ms 118.0MB 723ms 40ms openjdk 19
java 1-m.java 506ms 11ms 207.6MB 730ms 137ms openjdk/zgc 19

fannkuch-redux

Input: 11

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1-m.java 1645ms 29ms 101.7MB 3117ms 53ms graal/jvm 17.0.4
java 1-m.java 1702ms 48ms 44.1MB 3270ms 13ms openjdk 20
java 1-m.java 1704ms 48ms 42.0MB 3253ms 13ms openjdk 19
java 1-m.java 1733ms 31ms 44.4MB 3233ms 57ms openjdk/zgc 19

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1-m.java 269ms 8.5ms 43.1MB 437ms 13ms openjdk 20
java 1-m.java 273ms 1.8ms 42.0MB 433ms 13ms openjdk 19
java 1-m.java 279ms 26ms 92.6MB 447ms 17ms graal/jvm 17.0.4
java 1-m.java 319ms 7.9ms 44.0MB 450ms 47ms openjdk/zgc 19

fasta

Input: 2500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 4.java 511ms 4.4ms 41.8MB 593ms 13ms openjdk 20
java 4.java 516ms 1.0ms 41.9MB 590ms 17ms openjdk 19
java 4.java 554ms 4.2ms 41.9MB 597ms 47ms openjdk/zgc 19
java 4-m.java 609ms 4.5ms 118.1MB 900ms 40ms graal/jvm 17.0.4

Input: 250000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 4.java 141ms 2.2ms 41.2MB 167ms 7ms openjdk 20
java 4.java 142ms 0.5ms 43.1MB 163ms 13ms openjdk 19
java 4.java 160ms 17ms 101.0MB 200ms 33ms graal/jvm 17.0.4
java 4.java 185ms 2.6ms 41.2MB 173ms 47ms openjdk/zgc 19

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
c 1.c 1.5ms 0.1ms 1.1MB 0ms 0ms clang 11.0.0
c 1.c 1.6ms 0.2ms 1.0MB 0ms 0ms gcc 12.2.0
c 1.c 1.8ms 0.7ms 0.6MB 0ms 0ms zigcc 0.10.0-dev.4192+c75e8f361
java 1.java 68ms 0.5ms 52.8MB 62ms 10ms graal/jvm 17.0.4
java 1.java 76ms 1.1ms 42.4MB 72ms 10ms openjdk 19
java 1.java 78ms 3.8ms 42.5MB 74ms 4ms openjdk 20
java 1.java 119ms 4.4ms 41.8MB 70ms 54ms openjdk/zgc 19

knucleotide

Input: 2500000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
c 1-m.c 247ms 5.3ms 23.5MB 407ms 17ms gcc 12.2.0
c 1-m.c 529ms 44ms 20.3MB 830ms 17ms clang 11.0.0
java 3-m.java 1448ms 5.8ms 116.4MB 2650ms 43ms openjdk 19
java 3-m.java 1510ms 20ms 115.1MB 2760ms 43ms openjdk 20
java 3-m.java 1607ms 104ms 192.4MB 2947ms 63ms graal/jvm 17.0.4
java 3-m.java 1928ms 70ms 174.0MB 3423ms 110ms openjdk/zgc 19

Input: 250000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
c 1.c 33ms 0.8ms 12.8MB 50ms 0ms gcc 12.2.0
c 1-m.c 63ms 1.8ms 9.4MB 100ms 0ms clang 11.0.0
java 3-m.java 442ms 5.5ms 95.2MB 720ms 40ms openjdk 20
java 3-m.java 475ms 20ms 95.6MB 720ms 70ms openjdk/zgc 19
java 3-m.java 484ms 50ms 91.7MB 807ms 23ms openjdk 19
java 3-m.java 677ms 87ms 170.4MB 1190ms 60ms graal/jvm 17.0.4

mandelbrot

Input: 5000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1b.java 1413ms 18ms 48.2MB 1507ms 13ms openjdk 19
java 1b.java 1426ms 24ms 50.3MB 1537ms 3ms openjdk 20
java 1b.java 1452ms 11ms 49.0MB 1497ms 53ms openjdk/zgc 19
java 1b.java 1495ms 27ms 130.2MB 1727ms 57ms graal/jvm 17.0.4
java 1a.java 1532ms 1.2ms 48.6MB 1610ms 13ms openjdk 19
java 1a.java 1534ms 4.5ms 48.8MB 1617ms 10ms openjdk 20
java 1a.java 1576ms 4.8ms 49.7MB 1610ms 57ms openjdk/zgc 19
java 1a.java 1577ms 17ms 117.1MB 1677ms 37ms graal/jvm 17.0.4
java 1.java 2011ms 2.4ms 123.8MB 2093ms 33ms graal/jvm 17.0.4
java 1.java 2105ms 2.6ms 216.6MB 2163ms 37ms openjdk 20
java 1.java 2124ms 4.6ms 202.4MB 2170ms 47ms openjdk 19
java 1.java 2501ms 11ms 578.0MB 2250ms 370ms openjdk/zgc 19
java 2.java timeout 0.0ms 0.0MB 0ms 0ms openjdk 19
java 2.java timeout 0.0ms 0.0MB 0ms 0ms openjdk 20
java 2.java timeout 0.0ms 0.0MB 0ms 0ms openjdk/zgc 19

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1b.java 202ms 6.7ms 45.9MB 273ms 10ms openjdk 19
java 1a.java 209ms 3.7ms 46.4MB 270ms 17ms openjdk 20
java 1.java 209ms 4.8ms 97.8MB 247ms 33ms openjdk 19
java 1a.java 210ms 6.8ms 49.3MB 267ms 17ms openjdk 19
java 1.java 214ms 5.9ms 99.8MB 280ms 10ms openjdk 20
java 1b.java 221ms 21ms 44.5MB 300ms 13ms openjdk 20
java 1a.java 222ms 6.2ms 101.0MB 297ms 20ms graal/jvm 17.0.4
java 1b.java 244ms 11ms 44.7MB 263ms 57ms openjdk/zgc 19
java 1.java 256ms 16ms 117.1MB 327ms 37ms graal/jvm 17.0.4
java 1a.java 263ms 16ms 47.1MB 303ms 53ms openjdk/zgc 19
java 1.java 272ms 11ms 111.7MB 283ms 63ms openjdk/zgc 19
java 1b-m.java 294ms 43ms 121.7MB 460ms 37ms graal/jvm 17.0.4
java 2.java 750ms 16ms 591.4MB 927ms 117ms openjdk 20
java 2.java 757ms 24ms 558.0MB 937ms 120ms openjdk 19
java 2.java 1301ms 48ms 1059.6MB 1000ms 590ms openjdk/zgc 19

merkletrees

Input: 17

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1.java 488ms 7.7ms 291.8MB 517ms 63ms openjdk 20
java 1.java 503ms 9.9ms 367.5MB 530ms 63ms openjdk 19
java 1.java 550ms 7.1ms 364.9MB 677ms 93ms graal/jvm 17.0.4
java 1.java 924ms 2.7ms 697.8MB 633ms 437ms openjdk/zgc 19

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1.java 213ms 3.2ms 171.6MB 247ms 37ms openjdk 20
java 1.java 218ms 6.3ms 174.4MB 233ms 43ms openjdk 19
java 1-m.java 266ms 6.2ms 246.6MB 370ms 63ms graal/jvm 17.0.4
java 1.java 438ms 21ms 355.1MB 273ms 210ms openjdk/zgc 19

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
c 8-i.c 311ms 2.7ms 0.6MB 300ms 0ms zigcc 0.10.0-dev.4192+c75e8f361
c 5.c 320ms 0.3ms 0.9MB 307ms 0ms gcc 12.2.0
c 5.c 328ms 0.6ms 0.6MB 320ms 0ms zigcc 0.10.0-dev.4192+c75e8f361
c 2.c 338ms 0.8ms 0.6MB 330ms 0ms zigcc 0.10.0-dev.4192+c75e8f361
c 8-i.c 347ms 1.6ms 1.1MB 333ms 0ms clang 11.0.0
c 8-i.c 365ms 1.0ms 1.0MB 353ms 0ms gcc 12.2.0
c 5.c 367ms 0.2ms 1.1MB 357ms 0ms clang 11.0.0
c 2.c 407ms 0.8ms 1.1MB 400ms 0ms clang 11.0.0
java 1.java 540ms 3.3ms 87.0MB 580ms 17ms graal/jvm 17.0.4
java 1.java 555ms 3.7ms 42.9MB 573ms 7ms openjdk 19
java 1.java 558ms 2.0ms 42.7MB 577ms 7ms openjdk 20
java 1.java 609ms 7.5ms 42.3MB 590ms 57ms openjdk/zgc 19
c 2.c 624ms 0.4ms 1.0MB 610ms 0ms gcc 12.2.0
java 2.java 1878ms 33ms 547.1MB 1903ms 107ms openjdk 19
java 2.java 1906ms 35ms 551.4MB 1943ms 107ms openjdk 20
java 2.java 2586ms 7.0ms 1209.5MB 2020ms 770ms openjdk/zgc 19

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
c 8-i.c 33ms 1.5ms 0.6MB 20ms 0ms zigcc 0.10.0-dev.4192+c75e8f361
c 5.c 35ms 0.5ms 1.0MB 23ms 0ms gcc 12.2.0
c 5.c 35ms 0.3ms 0.6MB 30ms 0ms zigcc 0.10.0-dev.4192+c75e8f361
c 2.c 36ms 0.7ms 0.6MB 30ms 0ms zigcc 0.10.0-dev.4192+c75e8f361
c 8-i.c 38ms 1.0ms 1.1MB 30ms 0ms clang 11.0.0
c 8-i.c 40ms 1.0ms 1.0MB 30ms 0ms gcc 12.2.0
c 5.c 41ms 1.9ms 1.1MB 30ms 0ms clang 11.0.0
c 2.c 45ms 2.0ms 1.1MB 30ms 0ms clang 11.0.0
c 2.c 66ms 0.5ms 1.0MB 57ms 0ms gcc 12.2.0
java 1.java 138ms 3.6ms 42.7MB 150ms 13ms openjdk 20
java 1.java 140ms 0.8ms 87.3MB 180ms 27ms graal/jvm 17.0.4
java 1.java 145ms 2.8ms 44.0MB 163ms 7ms openjdk 19
java 1.java 183ms 0.8ms 41.9MB 160ms 57ms openjdk/zgc 19
java 2.java 416ms 11ms 351.8MB 473ms 77ms openjdk 19
java 2.java 422ms 14ms 364.2MB 483ms 87ms openjdk 20
java 2.java 678ms 5.7ms 468.7MB 510ms 327ms openjdk/zgc 19

nsieve

Input: 12

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1.java 629ms 21ms 88.2MB 647ms 30ms openjdk 20
java 1.java 643ms 28ms 84.8MB 677ms 13ms openjdk 19
c 1.c 667ms 43ms 41.0MB 640ms 13ms gcc 12.2.0
c 1.c 738ms 31ms 40.1MB 707ms 13ms zigcc 0.10.0-dev.4192+c75e8f361
c 1.c 779ms 36ms 40.8MB 733ms 30ms clang 11.0.0
java 1.java 906ms 36ms 110.4MB 863ms 77ms openjdk/zgc 19
java 2.java 1001ms 8.8ms 52.5MB 1033ms 17ms openjdk 20
java 2.java 1026ms 7.8ms 50.9MB 1017ms 53ms openjdk/zgc 19
java 2.java 1053ms 35ms 53.9MB 1090ms 17ms openjdk 19
java 1-m.java 1065ms 57ms 164.7MB 1633ms 50ms graal/jvm 17.0.4
java 2-m.java 1850ms 9.5ms 130.7MB 3400ms 57ms graal/jvm 17.0.4

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
c 1.c 121ms 5.2ms 11.8MB 107ms 0ms gcc 12.2.0
c 1.c 125ms 1.6ms 10.9MB 113ms 0ms zigcc 0.10.0-dev.4192+c75e8f361
c 1.c 129ms 1.2ms 11.6MB 113ms 0ms clang 11.0.0
java 1.java 226ms 1.1ms 60.4MB 263ms 10ms openjdk 20
java 1.java 228ms 4.7ms 62.2MB 253ms 20ms openjdk 19
java 1.java 280ms 4.5ms 60.8MB 270ms 53ms openjdk/zgc 19
java 2.java 316ms 2.9ms 48.3MB 343ms 23ms openjdk 20
java 2.java 322ms 4.4ms 48.5MB 357ms 10ms openjdk 19
java 1-m.java 329ms 17ms 135.7MB 470ms 43ms graal/jvm 17.0.4
java 2.java 357ms 1.6ms 44.3MB 347ms 57ms openjdk/zgc 19
java 2-m.java 610ms 5.4ms 127.3MB 1083ms 43ms graal/jvm 17.0.4

pidigits

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1.java 4940ms 2.2ms 335.5MB 5363ms 103ms graal/jvm 17.0.4
java 1.java timeout 0.0ms 0.0MB 0ms 0ms openjdk 19
java 1.java timeout 0.0ms 0.0MB 0ms 0ms openjdk 20
java 1.java timeout 0.0ms 0.0MB 0ms 0ms openjdk/zgc 19

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1.java 1342ms 18ms 368.3MB 1683ms 93ms graal/jvm 17.0.4
java 1.java 1409ms 13ms 284.4MB 1800ms 53ms openjdk 19
java 1.java 1429ms 11ms 247.2MB 1780ms 60ms openjdk 20
java 1.java 2043ms 164ms 1267.1MB 2037ms 687ms 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 0.0MB 0ms 0ms graal/jvm 17.0.4
java 3.java timeout 0.0ms 0.0MB 0ms 0ms openjdk 19
java 3.java timeout 0.0ms 0.0MB 0ms 0ms openjdk 20
java 3.java timeout 0.0ms 0.0MB 0ms 0ms openjdk/zgc 19

Input: 250000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 3.java 1042ms 4.6ms 110.0MB 1367ms 40ms openjdk 19
java 3.java 1048ms 22ms 192.4MB 1460ms 53ms graal/jvm 17.0.4
java 3.java 1053ms 3.8ms 115.4MB 1397ms 43ms openjdk 20
java 3.java 1158ms 13ms 159.4MB 1327ms 130ms openjdk/zgc 19

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
c 4-m.c 1392ms 2.2ms 2.5MB 2730ms 0ms gcc 12.2.0
c 6-im.c 1599ms 30ms 1.0MB 3113ms 0ms gcc 12.2.0
c 6-im.c 1734ms 20ms 3.0MB 3393ms 3ms clang 11.0.0
c 4-m.c 1741ms 9.5ms 3.1MB 3407ms 3ms clang 11.0.0
c 5-im.c 1867ms 10ms 1.0MB 3633ms 3ms gcc 12.2.0
c 5-im.c 2025ms 2.3ms 3.1MB 3983ms 0ms clang 11.0.0
c 3-m.c 2214ms 16ms 1.0MB 4340ms 0ms gcc 12.2.0
c 3-m.c 2214ms 14ms 3.1MB 4343ms 0ms clang 11.0.0
java 2-m.java 4295ms 13ms 106.8MB 8300ms 30ms graal/jvm 17.0.4
java 2.java timeout 0.0ms 0.0MB 0ms 0ms openjdk 19
java 2.java timeout 0.0ms 0.0MB 0ms 0ms openjdk 20
java 2.java timeout 0.0ms 0.0MB 0ms 0ms openjdk/zgc 19

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
c 4-m.c 361ms 5.9ms 1.0MB 687ms 0ms gcc 12.2.0
c 6-im.c 407ms 2.2ms 1.0MB 780ms 0ms gcc 12.2.0
c 6-im.c 443ms 3.8ms 2.9MB 847ms 0ms clang 11.0.0
c 4-m.c 445ms 2.6ms 2.9MB 853ms 0ms clang 11.0.0
c 5-im.c 473ms 2.2ms 1.0MB 907ms 0ms gcc 12.2.0
c 5-im.c 556ms 53ms 3.2MB 1013ms 0ms clang 11.0.0
c 3-m.c 562ms 3.7ms 1.0MB 1083ms 0ms gcc 12.2.0
c 3-m.c 566ms 5.1ms 3.0MB 1087ms 0ms clang 11.0.0
java 2-m.java 1244ms 9.2ms 103.8MB 2293ms 37ms graal/jvm 17.0.4
java 2-m.java 1603ms 59ms 44.5MB 3043ms 17ms openjdk 20
java 2-m.java 1702ms 192ms 46.3MB 3240ms 13ms openjdk 19
java 2-m.java 1784ms 198ms 42.6MB 3310ms 53ms openjdk/zgc 19

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
c 4-m.c 98ms 1.2ms 1.0MB 170ms 0ms gcc 12.2.0
c 6-im.c 109ms 0.4ms 1.0MB 200ms 0ms gcc 12.2.0
c 6-im.c 118ms 0.4ms 3.1MB 210ms 0ms clang 11.0.0
c 4-m.c 119ms 1.4ms 2.9MB 210ms 0ms clang 11.0.0
c 5-im.c 129ms 2.7ms 1.0MB 227ms 0ms gcc 12.2.0
c 5-im.c 143ms 3.6ms 3.2MB 250ms 0ms clang 11.0.0
c 3-m.c 150ms 1.3ms 0.9MB 273ms 0ms gcc 12.2.0
c 3-m.c 151ms 2.6ms 3.0MB 273ms 0ms clang 11.0.0
java 2-m.java 431ms 4.5ms 102.8MB 723ms 37ms graal/jvm 17.0.4
java 2-m.java 562ms 23ms 42.3MB 1003ms 17ms openjdk 19
java 2-m.java 594ms 17ms 44.7MB 1067ms 17ms openjdk 20
java 2-m.java 643ms 7.4ms 44.5MB 1073ms 57ms openjdk/zgc 19

coro-prime-sieve

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1-m.java 3620ms 824ms 205.3MB 6910ms 70ms openjdk 19
java 1-m.java 4184ms 48ms 906.5MB 7547ms 477ms openjdk/zgc 19
java 1.java timeout 0.0ms 0.0MB 0ms 0ms openjdk 20

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1-m.java 731ms 60ms 115.1MB 1300ms 40ms openjdk 19
java 1-m.java 977ms 76ms 308.1MB 1610ms 147ms openjdk/zgc 19
java 1-m.java 1030ms 37ms 113.9MB 1887ms 27ms openjdk 20