C VS Java benchmarks

Current benchmark data was generated on Tue Mar 25 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.0ms 0.0ms 1.4MB 0ms 0ms zigcc 0.14.0
c 1.c 1.2ms 0.1ms 2.1MB 0ms 0ms gcc 14.2.0
c 1.c 1.3ms 0.1ms 2.1MB 0ms 0ms clang 14.0.0-1ubuntu1.1
java 1.java 63ms 2.8ms 52.7MB 70ms 16ms graal/jvm 17.0.8
java 1.java 65ms 2.6ms 43.7MB 74ms 16ms openjdk 21
java 1.java 69ms 4.7ms 44.7MB 72ms 16ms openjdk 23
java 1.java 199ms 6.8ms 42.9MB 84ms 138ms 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 178ms 4.6ms 22.8MB 420ms 3ms gcc 14.2.0
c 1-m.c 317ms 51ms 25.9MB 1090ms 27ms clang 14.0.0-1ubuntu1.1
java 3-m.java 1032ms 61ms 128.5MB 3537ms 40ms openjdk 21
java 3-m.java 1092ms 33ms 157.0MB 3727ms 67ms openjdk 23
java 3-m.java 1122ms 4.2ms 178.6MB 3850ms 63ms graal/jvm 17.0.8
java 3-m.java 1415ms 34ms 178.6MB 4437ms 210ms openjdk/zgc 21

Input: 250000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
c 1-m.c 28ms 1.6ms 13.9MB 63ms 0ms gcc 14.2.0
c 1-m.c 36ms 0.8ms 15.1MB 100ms 3ms clang 14.0.0-1ubuntu1.1
java 3-m.java 317ms 18ms 89.9MB 897ms 40ms openjdk 21
java 3-m.java 340ms 23ms 90.4MB 1017ms 37ms openjdk 23
java 3-m.java 341ms 15ms 135.6MB 917ms 63ms graal/jvm 17.0.8
java 3-m.java 433ms 1.6ms 98.2MB 893ms 170ms openjdk/zgc 21

mandelbrot

Input: 5000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
c 1-mffi.c 222ms 13ms 7.6MB 827ms 10ms clang 14.0.0-1ubuntu1.1
c 1-mffi.c 265ms 2.3ms 6.7MB 810ms 0ms gcc 14.2.0
c 1-mffi.c 332ms 2.1ms 5.9MB 320ms 0ms zigcc 0.14.0
c 1-ffi.c 332ms 2.5ms 5.9MB 323ms 0ms zigcc 0.14.0
c 1-ffi.c 456ms 4.1ms 6.4MB 443ms 0ms clang 14.0.0-1ubuntu1.1
c 1-ffi.c 541ms 2.5ms 6.7MB 530ms 0ms gcc 14.2.0
java 1b.java 1163ms 28ms 53.9MB 1280ms 20ms openjdk 21
java 1b.java 1165ms 9.9ms 55.8MB 1280ms 27ms openjdk 23
java 1b.java 1192ms 10ms 110.0MB 1417ms 40ms graal/jvm 17.0.8
java 1.java 1248ms 2.5ms 138.4MB 1357ms 47ms graal/jvm 17.0.8
java 1b.java 1291ms 16ms 50.8MB 1280ms 143ms openjdk/zgc 21
java 1a.java 1657ms 5.6ms 54.7MB 1757ms 17ms openjdk 21
java 1a.java 1660ms 6.7ms 56.1MB 1760ms 20ms openjdk 23
java 1a.java 1681ms 2.9ms 102.0MB 1790ms 43ms graal/jvm 17.0.8
java 1.java 1702ms 4.3ms 202.0MB 1770ms 40ms openjdk 21
java 1.java 1722ms 3.0ms 320.5MB 1783ms 57ms openjdk 23
java 1a.java 1792ms 6.1ms 51.6MB 1763ms 150ms openjdk/zgc 21
java 1.java 2406ms 36ms 881.5MB 1803ms 710ms openjdk/zgc 21
java 2.java timeout 0.0ms 636.5MB 5327ms 117ms openjdk 21
java 2.java timeout 0.0ms 807.5MB 5327ms 133ms openjdk 23
java 2.java timeout 0.0ms 3477.5MB 3343ms 2040ms openjdk/zgc 21

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
c 1-ffi.c 16ms 0.1ms 3.0MB 10ms 0ms zigcc 0.14.0
c 1-mffi.c 16ms 0.1ms 3.0MB 10ms 0ms zigcc 0.14.0
c 1-mffi.c 18ms 1.7ms 3.8MB 43ms 0ms gcc 14.2.0
c 1-mffi.c 18ms 1.6ms 4.6MB 30ms 0ms clang 14.0.0-1ubuntu1.1
c 1-ffi.c 22ms 0.1ms 3.6MB 10ms 0ms clang 14.0.0-1ubuntu1.1
c 1-ffi.c 26ms 1.0ms 3.8MB 20ms 0ms gcc 14.2.0
java 1b-m.java 175ms 5.3ms 49.4MB 270ms 27ms openjdk 21
java 1b-m.java 182ms 3.7ms 50.6MB 277ms 20ms openjdk 23
java 1a-m.java 189ms 1.1ms 50.8MB 290ms 20ms openjdk 21
java 1a-m.java 193ms 3.7ms 52.2MB 293ms 27ms openjdk 23
java 1-m.java 193ms 0.6ms 87.2MB 270ms 27ms openjdk 23
java 1-m.java 194ms 5.5ms 82.1MB 270ms 27ms openjdk 21
java 1-m.java 196ms 1.9ms 113.3MB 300ms 43ms graal/jvm 17.0.8
java 1a-m.java 211ms 0.1ms 98.3MB 317ms 40ms graal/jvm 17.0.8
java 1b-m.java 237ms 31ms 101.3MB 403ms 43ms graal/jvm 17.0.8
java 1b.java 316ms 2.2ms 47.7MB 300ms 147ms openjdk/zgc 21
java 1a.java 318ms 2.3ms 49.4MB 297ms 143ms openjdk/zgc 21
java 1.java 339ms 5.1ms 114.1MB 270ms 163ms openjdk/zgc 21
java 2-m.java 564ms 12ms 624.8MB 847ms 90ms openjdk 21
java 2-m.java 581ms 9.4ms 787.4MB 867ms 103ms openjdk 23
java 2.java 1662ms 61ms 1399.5MB 840ms 1130ms openjdk/zgc 21

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
c 8-i.c 270ms 3.5ms 1.5MB 263ms 0ms zigcc 0.14.0
c 8-i.c 303ms 0.8ms 2.1MB 290ms 0ms clang 14.0.0-1ubuntu1.1
c 2.c 310ms 0.8ms 2.3MB 300ms 0ms gcc 14.2.0
c 5.c 313ms 0.8ms 2.3MB 307ms 0ms gcc 14.2.0
c 5.c 317ms 0.3ms 2.1MB 310ms 0ms clang 14.0.0-1ubuntu1.1
c 2.c 317ms 5.6ms 1.5MB 303ms 0ms zigcc 0.14.0
c 5.c 318ms 3.5ms 1.5MB 310ms 0ms zigcc 0.14.0
c 2.c 318ms 2.2ms 2.1MB 310ms 0ms clang 14.0.0-1ubuntu1.1
c 8-i.c 333ms 0.4ms 2.3MB 320ms 0ms gcc 14.2.0
java 1.java 445ms 1.2ms 45.1MB 487ms 17ms openjdk 21
java 1.java 448ms 0.8ms 48.1MB 483ms 20ms openjdk 23
java 1.java 451ms 5.3ms 82.3MB 480ms 30ms graal/jvm 17.0.8
java 1.java 570ms 6.7ms 44.6MB 483ms 140ms openjdk/zgc 21
java 2.java 1247ms 8.3ms 612.0MB 1383ms 87ms openjdk 21
java 2.java 1263ms 12ms 761.8MB 1380ms 107ms openjdk 23
java 2.java 3428ms 91ms 2585.6MB 1647ms 1983ms openjdk/zgc 21

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
c 8-i.c 31ms 4.1ms 1.5MB 23ms 0ms zigcc 0.14.0
c 8-i.c 34ms 0.5ms 2.3MB 27ms 0ms clang 14.0.0-1ubuntu1.1
c 2.c 34ms 0.5ms 2.3MB 30ms 0ms gcc 14.2.0
c 2.c 34ms 0.3ms 1.5MB 30ms 0ms zigcc 0.14.0
c 5.c 34ms 0.1ms 2.3MB 30ms 0ms clang 14.0.0-1ubuntu1.1
c 5.c 34ms 0.3ms 2.3MB 30ms 0ms gcc 14.2.0
c 5.c 35ms 0.6ms 1.5MB 30ms 0ms zigcc 0.14.0
c 8-i.c 36ms 0.2ms 2.3MB 30ms 0ms gcc 14.2.0
c 2.c 40ms 2.3ms 2.1MB 30ms 0ms clang 14.0.0-1ubuntu1.1
java 1.java 120ms 1.3ms 45.2MB 160ms 20ms openjdk 21
java 1.java 122ms 3.4ms 48.0MB 157ms 17ms openjdk 23
java 1.java 126ms 6.4ms 81.5MB 157ms 30ms graal/jvm 17.0.8
java 1.java 255ms 8.1ms 44.8MB 173ms 147ms openjdk/zgc 21
java 2-m.java 305ms 1.9ms 374.3MB 440ms 63ms openjdk 21
java 2-m.java 314ms 3.5ms 404.5MB 453ms 67ms openjdk 23
java 2.java 718ms 16ms 545.0MB 480ms 433ms openjdk/zgc 21

nsieve

Input: 12

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
c 1.c 292ms 7.4ms 41.0MB 277ms 0ms gcc 14.2.0
c 1.c 327ms 8.1ms 40.2MB 310ms 0ms zigcc 0.14.0
c 1.c 337ms 20ms 40.8MB 317ms 0ms clang 14.0.0-1ubuntu1.1
java 1.java 414ms 8.0ms 115.1MB 463ms 23ms openjdk 21
java 1.java 417ms 11ms 118.0MB 453ms 27ms openjdk 23
java 1.java 598ms 4.7ms 112.6MB 497ms 167ms openjdk/zgc 21
java 1-m.java 645ms 4.3ms 256.4MB 920ms 83ms graal/jvm 17.0.8
java 2.java 783ms 3.4ms 57.0MB 837ms 23ms openjdk 21
java 2.java 785ms 6.3ms 60.3MB 833ms 23ms openjdk 23
java 2.java 856ms 3.3ms 53.4MB 780ms 150ms openjdk/zgc 21
java 2-m.java 1326ms 70ms 214.5MB 2320ms 103ms graal/jvm 17.0.8

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
c 1.c 53ms 4.6ms 11.8MB 43ms 0ms gcc 14.2.0
c 1.c 55ms 2.0ms 11.6MB 43ms 0ms clang 14.0.0-1ubuntu1.1
c 1.c 60ms 1.3ms 11.0MB 50ms 0ms zigcc 0.14.0
java 1.java 158ms 11ms 68.1MB 193ms 30ms openjdk 23
java 1.java 159ms 1.7ms 64.7MB 210ms 20ms openjdk 21
java 1-m.java 209ms 17ms 124.7MB 293ms 43ms graal/jvm 17.0.8
java 2.java 261ms 1.6ms 50.5MB 313ms 17ms openjdk 23
java 2.java 261ms 1.8ms 49.9MB 320ms 20ms openjdk 21
java 1.java 292ms 2.3ms 61.4MB 210ms 157ms openjdk/zgc 21
java 2.java 371ms 7.0ms 47.7MB 307ms 143ms openjdk/zgc 21
java 2-m.java 474ms 3.4ms 194.3MB 833ms 70ms graal/jvm 17.0.8

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
c 6-im.c 958ms 2.2ms 2.0MB 3770ms 0ms gcc 14.2.0
c 4-m.c 968ms 2.7ms 2.0MB 3810ms 0ms gcc 14.2.0
c 6-im.c 1011ms 12ms 3.3MB 3953ms 7ms clang 14.0.0-1ubuntu1.1
c 5-im.c 1099ms 17ms 2.0MB 4293ms 3ms gcc 14.2.0
c 4-m.c 1132ms 16ms 3.1MB 4430ms 7ms clang 14.0.0-1ubuntu1.1
c 5-im.c 1333ms 5.5ms 3.3MB 5243ms 3ms clang 14.0.0-1ubuntu1.1
c 3-m.c 1845ms 24ms 3.3MB 7243ms 10ms clang 14.0.0-1ubuntu1.1
c 3-m.c 1975ms 10ms 2.3MB 7780ms 7ms gcc 14.2.0
java 2-m.java 1990ms 4.9ms 48.3MB 7590ms 23ms openjdk 21
java 2-m.java 2007ms 4.6ms 48.8MB 7640ms 23ms openjdk 23
java 2-m.java 2118ms 9.6ms 45.4MB 7597ms 150ms openjdk/zgc 21
java 2-m.java 2519ms 21ms 94.5MB 9413ms 47ms graal/jvm 17.0.8

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
c 6-im.c 247ms 0.9ms 2.0MB 943ms 0ms gcc 14.2.0
c 4-m.c 252ms 1.3ms 2.1MB 967ms 0ms gcc 14.2.0
c 6-im.c 263ms 2.8ms 3.3MB 993ms 0ms clang 14.0.0-1ubuntu1.1
c 5-im.c 287ms 8.2ms 2.0MB 1100ms 0ms gcc 14.2.0
c 4-m.c 289ms 1.7ms 3.3MB 1110ms 0ms clang 14.0.0-1ubuntu1.1
c 5-im.c 342ms 1.1ms 3.3MB 1313ms 0ms clang 14.0.0-1ubuntu1.1
c 3-m.c 496ms 43ms 3.3MB 1873ms 7ms clang 14.0.0-1ubuntu1.1
c 3-m.c 497ms 0.9ms 2.0MB 1940ms 0ms gcc 14.2.0
java 2-m.java 603ms 2.9ms 47.6MB 2127ms 23ms openjdk 21
java 2-m.java 618ms 4.6ms 49.0MB 2187ms 27ms openjdk 23
java 2-m.java 737ms 4.9ms 45.5MB 2160ms 147ms openjdk/zgc 21
java 2-m.java 775ms 11ms 95.1MB 2713ms 43ms graal/jvm 17.0.8

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
c 4-m.c 71ms 0.4ms 2.0MB 257ms 0ms gcc 14.2.0
c 6-im.c 73ms 4.0ms 3.3MB 253ms 0ms clang 14.0.0-1ubuntu1.1
c 6-im.c 75ms 7.5ms 2.0MB 263ms 0ms gcc 14.2.0
c 5-im.c 79ms 1.5ms 2.0MB 280ms 0ms gcc 14.2.0
c 4-m.c 79ms 0.8ms 3.1MB 280ms 0ms clang 14.0.0-1ubuntu1.1
c 5-im.c 92ms 1.5ms 3.1MB 327ms 0ms clang 14.0.0-1ubuntu1.1
c 3-m.c 126ms 3.1ms 3.1MB 453ms 0ms clang 14.0.0-1ubuntu1.1
c 3-m.c 131ms 1.1ms 2.0MB 493ms 0ms gcc 14.2.0
java 2-m.java 255ms 0.5ms 47.6MB 760ms 23ms openjdk 21
java 2-m.java 259ms 11ms 48.6MB 767ms 20ms openjdk 23
java 2-m.java 305ms 26ms 96.4MB 910ms 50ms graal/jvm 17.0.8
java 2-m.java 384ms 3.8ms 45.7MB 763ms 150ms openjdk/zgc 21