C VS Java benchmarks

Current benchmark data was generated on Mon Jun 23 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.)

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
c 1.c 1.1ms 0.3ms 1.4MB 0ms 0ms zigcc 0.14.1
c 1.c 1.2ms 0.1ms 2.1MB 0ms 0ms gcc 15.1.0
c 1.c 1.3ms 0.1ms 2.1MB 0ms 0ms clang 14.0.0-1ubuntu1.1
java 1.java 64ms 2.4ms 52.4MB 66ms 18ms graal/jvm 17.0.8
java 1.java 72ms 4.4ms 44.7MB 78ms 16ms openjdk 23
java 1.java 73ms 4.9ms 43.8MB 76ms 20ms openjdk 21
java 1.java 192ms 4.4ms 42.8MB 80ms 136ms openjdk/zgc 21

knucleotide

Input: 2500000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
c 1-m.c 176ms 0.8ms 23.2MB 403ms 10ms gcc 15.1.0
c 1-m.c 315ms 16ms 25.7MB 1053ms 30ms clang 14.0.0-1ubuntu1.1
java 3-m.java 1018ms 58ms 127.5MB 3483ms 40ms openjdk 21
java 3-m.java 1113ms 8.3ms 155.2MB 3807ms 50ms openjdk 23
java 3-m.java 1123ms 23ms 185.6MB 3840ms 63ms graal/jvm 17.0.8
java 3-m.java 1468ms 17ms 179.2MB 4637ms 217ms openjdk/zgc 21

Input: 250000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
c 1-m.c 27ms 0.5ms 12.9MB 60ms 0ms gcc 15.1.0
c 1-m.c 39ms 1.6ms 15.0MB 110ms 7ms clang 14.0.0-1ubuntu1.1
java 3-m.java 319ms 27ms 98.1MB 923ms 40ms openjdk 23
java 3-m.java 330ms 18ms 99.7MB 960ms 37ms openjdk 21
java 3-m.java 443ms 3.3ms 98.5MB 930ms 173ms openjdk/zgc 21
java 3-m.java 1394ms 302ms 258.9MB 5010ms 127ms graal/jvm 17.0.8

mandelbrot

Input: 5000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
c 1-mffi.c 232ms 17ms 7.6MB 860ms 10ms clang 14.0.0-1ubuntu1.1
c 1-mffi.c 269ms 7.4ms 6.5MB 820ms 0ms gcc 15.1.0
c 1-mffi.c 330ms 1.2ms 6.0MB 320ms 0ms zigcc 0.14.1
c 1-ffi.c 330ms 0.7ms 6.0MB 320ms 0ms zigcc 0.14.1
c 1-ffi.c 452ms 1.7ms 6.7MB 440ms 0ms clang 14.0.0-1ubuntu1.1
c 1-ffi.c 544ms 3.5ms 6.8MB 530ms 0ms gcc 15.1.0
java 1b.java 1149ms 2.5ms 54.2MB 1243ms 27ms openjdk 21
java 1b.java 1154ms 6.0ms 54.9MB 1253ms 20ms openjdk 23
java 1b.java 1185ms 18ms 109.7MB 1407ms 43ms graal/jvm 17.0.8
java 1.java 1254ms 6.4ms 136.5MB 1370ms 47ms graal/jvm 17.0.8
java 1b.java 1283ms 13ms 51.4MB 1273ms 147ms openjdk/zgc 21
java 1a.java 1656ms 0.6ms 55.1MB 1753ms 17ms openjdk 21
java 1a.java 1663ms 12ms 56.2MB 1757ms 23ms openjdk 23
java 1a.java 1690ms 12ms 102.1MB 1797ms 50ms graal/jvm 17.0.8
java 1.java 1703ms 2.8ms 202.6MB 1777ms 37ms openjdk 21
java 1.java 1717ms 7.6ms 323.7MB 1773ms 57ms openjdk 23
java 1a.java 1784ms 11ms 51.7MB 1763ms 143ms openjdk/zgc 21
java 1.java 2360ms 6.6ms 855.3MB 1810ms 657ms openjdk/zgc 21
java 2.java timeout 0.0ms 676.0MB 5323ms 107ms openjdk 21
java 2.java timeout 0.0ms 768.5MB 5283ms 123ms openjdk 23
java 2.java timeout 0.0ms 3329.3MB 3447ms 1910ms openjdk/zgc 21

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
c 1-mffi.c 15ms 1.3ms 4.8MB 33ms 0ms clang 14.0.0-1ubuntu1.1
c 1-mffi.c 17ms 0.1ms 3.0MB 10ms 0ms zigcc 0.14.1
c 1-ffi.c 17ms 0.3ms 3.0MB 10ms 0ms zigcc 0.14.1
c 1-mffi.c 19ms 1.7ms 3.8MB 47ms 0ms gcc 15.1.0
c 1-ffi.c 22ms 0.3ms 3.6MB 10ms 0ms clang 14.0.0-1ubuntu1.1
c 1-ffi.c 28ms 3.7ms 3.6MB 20ms 0ms gcc 15.1.0
java 1b-m.java 179ms 14ms 49.5MB 280ms 23ms openjdk 21
java 1b-m.java 183ms 9.7ms 51.2MB 290ms 20ms openjdk 23
java 1a-m.java 192ms 8.1ms 50.0MB 293ms 20ms openjdk 21
java 1a-m.java 192ms 3.0ms 52.4MB 300ms 20ms openjdk 23
java 1-m.java 192ms 3.2ms 81.7MB 263ms 27ms openjdk 21
java 1-m.java 197ms 1.2ms 112.1MB 303ms 43ms graal/jvm 17.0.8
java 1-m.java 198ms 7.3ms 87.1MB 270ms 30ms openjdk 23
java 1a-m.java 208ms 7.2ms 98.8MB 310ms 43ms graal/jvm 17.0.8
java 1b-m.java 226ms 20ms 102.0MB 373ms 43ms graal/jvm 17.0.8
java 1b.java 313ms 13ms 47.8MB 310ms 140ms openjdk/zgc 21
java 1a.java 317ms 6.4ms 49.5MB 293ms 143ms openjdk/zgc 21
java 1.java 331ms 4.5ms 114.6MB 260ms 167ms openjdk/zgc 21
java 2-m.java 563ms 7.9ms 647.7MB 857ms 97ms openjdk 21
java 2-m.java 569ms 9.9ms 723.6MB 850ms 103ms openjdk 23
java 2.java 1600ms 3.2ms 1341.4MB 867ms 1043ms openjdk/zgc 21

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
c 8-i.c 266ms 0.5ms 1.5MB 260ms 0ms zigcc 0.14.1
c 8-i.c 301ms 1.1ms 2.1MB 290ms 0ms clang 14.0.0-1ubuntu1.1
c 2.c 310ms 1.6ms 2.3MB 300ms 0ms gcc 15.1.0
c 2.c 312ms 0.6ms 1.5MB 300ms 0ms zigcc 0.14.1
c 5.c 313ms 1.3ms 2.3MB 303ms 0ms gcc 15.1.0
c 5.c 317ms 4.2ms 2.1MB 307ms 0ms clang 14.0.0-1ubuntu1.1
c 5.c 318ms 0.9ms 1.5MB 310ms 0ms zigcc 0.14.1
c 2.c 320ms 0.6ms 2.1MB 310ms 0ms clang 14.0.0-1ubuntu1.1
c 8-i.c 336ms 0.8ms 2.3MB 330ms 0ms gcc 15.1.0
java 1.java 441ms 5.0ms 45.2MB 473ms 17ms openjdk 21
java 1.java 449ms 1.1ms 47.9MB 480ms 20ms openjdk 23
java 1.java 450ms 4.6ms 81.4MB 480ms 23ms graal/jvm 17.0.8
java 1.java 573ms 3.6ms 44.8MB 497ms 140ms openjdk/zgc 21
java 2.java 1253ms 11ms 668.0MB 1373ms 93ms openjdk 21
java 2.java 1255ms 4.2ms 766.6MB 1373ms 100ms openjdk 23
java 2.java 3285ms 47ms 2400.8MB 1683ms 1837ms openjdk/zgc 21

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
c 8-i.c 29ms 0.5ms 1.5MB 20ms 0ms zigcc 0.14.1
c 8-i.c 33ms 0.7ms 2.1MB 27ms 0ms clang 14.0.0-1ubuntu1.1
c 2.c 33ms 0.2ms 2.3MB 27ms 0ms gcc 15.1.0
c 5.c 33ms 0.1ms 2.3MB 30ms 0ms gcc 15.1.0
c 2.c 34ms 0.9ms 1.5MB 30ms 0ms zigcc 0.14.1
c 5.c 35ms 0.5ms 2.1MB 30ms 0ms clang 14.0.0-1ubuntu1.1
c 5.c 35ms 0.2ms 1.5MB 30ms 0ms zigcc 0.14.1
c 2.c 36ms 1.2ms 2.1MB 30ms 0ms clang 14.0.0-1ubuntu1.1
c 8-i.c 36ms 0.1ms 2.3MB 30ms 0ms gcc 15.1.0
java 1.java 118ms 2.7ms 81.6MB 150ms 27ms graal/jvm 17.0.8
java 1.java 124ms 1.2ms 48.5MB 157ms 23ms openjdk 23
java 1.java 135ms 27ms 45.4MB 153ms 13ms openjdk 21
java 1.java 249ms 2.6ms 44.8MB 167ms 143ms openjdk/zgc 21
java 2-m.java 295ms 10ms 352.2MB 433ms 50ms openjdk 21
java 2-m.java 313ms 6.2ms 395.9MB 450ms 63ms openjdk 23
java 2.java 705ms 8.5ms 535.8MB 483ms 417ms openjdk/zgc 21

nsieve

Input: 12

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
c 1.c 331ms 7.2ms 40.9MB 313ms 3ms gcc 15.1.0
c 1.c 347ms 11ms 40.3MB 330ms 0ms zigcc 0.14.1
c 1.c 362ms 17ms 41.0MB 343ms 7ms clang 14.0.0-1ubuntu1.1
java 1.java 414ms 0.9ms 118.0MB 460ms 23ms openjdk 23
java 1.java 423ms 11ms 115.3MB 473ms 20ms openjdk 21
java 1.java 597ms 9.6ms 112.7MB 500ms 163ms openjdk/zgc 21
java 1-m.java 607ms 8.4ms 214.2MB 883ms 67ms graal/jvm 17.0.8
java 2.java 783ms 3.4ms 57.1MB 847ms 17ms openjdk 21
java 2.java 790ms 3.7ms 60.7MB 843ms 17ms openjdk 23
java 2.java 854ms 2.8ms 53.3MB 787ms 147ms openjdk/zgc 21
java 2-m.java 1346ms 23ms 259.9MB 2400ms 117ms graal/jvm 17.0.8

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
c 1.c 52ms 2.1ms 11.6MB 40ms 0ms gcc 15.1.0
c 1.c 53ms 1.8ms 11.7MB 40ms 0ms clang 14.0.0-1ubuntu1.1
c 1.c 56ms 4.4ms 11.0MB 43ms 0ms zigcc 0.14.1
java 1.java 153ms 0.8ms 68.2MB 200ms 20ms openjdk 23
java 1.java 158ms 2.0ms 64.8MB 213ms 13ms openjdk 21
java 1-m.java 211ms 22ms 124.9MB 297ms 47ms graal/jvm 17.0.8
java 2.java 265ms 7.5ms 50.3MB 313ms 20ms openjdk 23
java 2.java 271ms 12ms 50.0MB 337ms 20ms openjdk 21
java 1.java 291ms 0.1ms 61.5MB 213ms 150ms openjdk/zgc 21
java 2.java 377ms 6.4ms 47.6MB 310ms 147ms openjdk/zgc 21
java 2-m.java 475ms 9.9ms 145.5MB 853ms 57ms graal/jvm 17.0.8

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
c 3-m.c 737ms 1.3ms 2.3MB 2890ms 0ms gcc 15.1.0
c 6-im.c 952ms 0.9ms 2.0MB 3750ms 0ms gcc 15.1.0
c 4-m.c 998ms 13ms 2.0MB 3907ms 0ms gcc 15.1.0
c 6-im.c 1001ms 0.7ms 3.3MB 3937ms 0ms clang 14.0.0-1ubuntu1.1
c 4-m.c 1122ms 4.0ms 3.3MB 4410ms 0ms clang 14.0.0-1ubuntu1.1
c 5-im.c 1144ms 1.6ms 2.0MB 4507ms 0ms gcc 15.1.0
c 5-im.c 1337ms 15ms 3.1MB 5243ms 3ms clang 14.0.0-1ubuntu1.1
c 3-m.c 1838ms 7.0ms 3.1MB 7227ms 7ms clang 14.0.0-1ubuntu1.1
java 2-m.java 1986ms 16ms 47.3MB 7597ms 23ms openjdk 21
java 2-m.java 1998ms 10ms 48.7MB 7633ms 23ms openjdk 23
java 2-m.java 2113ms 11ms 45.6MB 7603ms 150ms openjdk/zgc 21
java 2-m.java 2529ms 6.7ms 95.2MB 9463ms 47ms graal/jvm 17.0.8

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
c 3-m.c 194ms 1.1ms 2.0MB 737ms 0ms gcc 15.1.0
c 6-im.c 247ms 2.4ms 2.0MB 940ms 0ms gcc 15.1.0
c 4-m.c 259ms 0.7ms 2.0MB 1000ms 0ms gcc 15.1.0
c 6-im.c 268ms 16ms 3.4MB 1007ms 0ms clang 14.0.0-1ubuntu1.1
c 4-m.c 288ms 1.3ms 3.1MB 1100ms 0ms clang 14.0.0-1ubuntu1.1
c 5-im.c 294ms 0.9ms 2.0MB 1130ms 0ms gcc 15.1.0
c 5-im.c 376ms 62ms 3.3MB 1403ms 7ms clang 14.0.0-1ubuntu1.1
c 3-m.c 469ms 7.4ms 3.3MB 1800ms 0ms clang 14.0.0-1ubuntu1.1
java 2-m.java 602ms 2.8ms 48.8MB 2140ms 20ms openjdk 23
java 2-m.java 605ms 4.7ms 47.7MB 2143ms 23ms openjdk 21
java 2-m.java 745ms 4.0ms 45.6MB 2200ms 147ms openjdk/zgc 21
java 2-m.java 772ms 10ms 94.7MB 2710ms 40ms graal/jvm 17.0.8

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
c 3-m.c 56ms 0.2ms 2.0MB 193ms 0ms gcc 15.1.0
c 6-im.c 69ms 0.2ms 2.0MB 250ms 0ms gcc 15.1.0
c 4-m.c 72ms 0.8ms 2.3MB 260ms 0ms gcc 15.1.0
c 6-im.c 73ms 2.3ms 3.1MB 250ms 0ms clang 14.0.0-1ubuntu1.1
c 4-m.c 79ms 0.7ms 3.0MB 280ms 0ms clang 14.0.0-1ubuntu1.1
c 5-im.c 81ms 0.7ms 2.0MB 293ms 0ms gcc 15.1.0
c 5-im.c 92ms 0.2ms 3.1MB 333ms 0ms clang 14.0.0-1ubuntu1.1
c 3-m.c 123ms 0.9ms 3.3MB 453ms 0ms clang 14.0.0-1ubuntu1.1
java 2-m.java 247ms 2.2ms 47.7MB 747ms 20ms openjdk 21
java 2-m.java 257ms 13ms 48.3MB 773ms 20ms openjdk 23
java 2-m.java 294ms 26ms 93.1MB 890ms 33ms graal/jvm 17.0.8
java 2-m.java 386ms 9.7ms 45.6MB 763ms 153ms openjdk/zgc 21