C VS Java benchmarks

Current benchmark data was generated on Fri Aug 01 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.1ms 1.3MB 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.6ms 0.7ms 2.1MB 0ms 0ms clang 14.0.0-1ubuntu1.1
java 1.java 62ms 1.4ms 52.9MB 64ms 20ms graal/jvm 17.0.8
java 1.java 69ms 4.7ms 43.9MB 78ms 10ms openjdk 21
java 1.java 73ms 1.9ms 44.7MB 74ms 16ms openjdk 23
java 1.java 186ms 3.9ms 42.9MB 82ms 132ms 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 171ms 4.2ms 24.1MB 400ms 10ms gcc 15.1.0
c 1-m.c 293ms 1.6ms 25.7MB 1000ms 23ms clang 14.0.0-1ubuntu1.1
java 3-m.java 1059ms 24ms 128.6MB 3640ms 40ms openjdk 21
java 3-m.java 1069ms 27ms 156.2MB 3697ms 50ms openjdk 23
java 3-m.java 1111ms 8.8ms 177.8MB 3810ms 60ms graal/jvm 17.0.8
java 3-m.java 1432ms 47ms 179.5MB 4517ms 200ms 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 1.3ms 13.6MB 60ms 0ms gcc 15.1.0
c 1-m.c 37ms 0.3ms 15.0MB 93ms 3ms clang 14.0.0-1ubuntu1.1
java 3-m.java 320ms 31ms 101.7MB 927ms 40ms openjdk 21
java 3-m.java 338ms 8.1ms 89.9MB 1003ms 40ms openjdk 23
java 3-m.java 351ms 21ms 139.6MB 963ms 53ms graal/jvm 17.0.8
java 3-m.java 432ms 6.3ms 98.5MB 910ms 163ms openjdk/zgc 21

mandelbrot

Input: 5000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
c 1-mffi.c 219ms 4.3ms 7.6MB 810ms 10ms clang 14.0.0-1ubuntu1.1
c 1-mffi.c 264ms 0.9ms 6.6MB 810ms 0ms gcc 15.1.0
c 1-ffi.c 330ms 2.0ms 6.0MB 320ms 0ms zigcc 0.14.1
c 1-mffi.c 331ms 0.8ms 6.0MB 320ms 0ms zigcc 0.14.1
c 1-ffi.c 453ms 1.0ms 6.5MB 443ms 0ms clang 14.0.0-1ubuntu1.1
c 1-ffi.c 545ms 3.1ms 6.8MB 537ms 0ms gcc 15.1.0
java 1b.java 1153ms 11ms 54.1MB 1260ms 20ms openjdk 21
java 1b.java 1157ms 12ms 55.0MB 1263ms 20ms openjdk 23
java 1b.java 1183ms 11ms 109.5MB 1370ms 40ms graal/jvm 17.0.8
java 1.java 1245ms 4.3ms 136.3MB 1357ms 43ms graal/jvm 17.0.8
java 1b.java 1267ms 8.8ms 51.0MB 1250ms 140ms openjdk/zgc 21
java 1a.java 1654ms 2.8ms 54.3MB 1750ms 23ms openjdk 21
java 1a.java 1658ms 10ms 56.0MB 1753ms 20ms openjdk 23
java 1a.java 1687ms 1.2ms 102.5MB 1797ms 43ms graal/jvm 17.0.8
java 1.java 1702ms 12ms 202.6MB 1770ms 47ms openjdk 21
java 1.java 1706ms 3.4ms 317.9MB 1760ms 57ms openjdk 23
java 1a.java 1782ms 6.3ms 51.8MB 1760ms 140ms openjdk/zgc 21
java 1.java 2356ms 2.1ms 854.4MB 1810ms 653ms openjdk/zgc 21
java 2.java timeout 0.0ms 644.5MB 5340ms 123ms openjdk 21
java 2.java timeout 0.0ms 857.3MB 5283ms 127ms openjdk 23
java 2.java timeout 0.0ms 3246.1MB 3480ms 1897ms 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.2ms 4.8MB 30ms 0ms clang 14.0.0-1ubuntu1.1
c 1-ffi.c 16ms 0.3ms 3.0MB 10ms 0ms zigcc 0.14.1
c 1-mffi.c 16ms 0.4ms 3.0MB 10ms 0ms zigcc 0.14.1
c 1-mffi.c 16ms 1.2ms 3.8MB 40ms 0ms gcc 15.1.0
c 1-ffi.c 21ms 0.2ms 3.6MB 10ms 0ms clang 14.0.0-1ubuntu1.1
c 1-ffi.c 26ms 1.1ms 3.8MB 20ms 0ms gcc 15.1.0
java 1b-m.java 184ms 13ms 49.7MB 297ms 20ms openjdk 21
java 1b-m.java 184ms 12ms 50.6MB 283ms 20ms openjdk 23
java 1a-m.java 191ms 2.5ms 52.5MB 290ms 23ms openjdk 23
java 1-m.java 191ms 1.9ms 81.8MB 263ms 33ms openjdk 21
java 1-m.java 193ms 4.0ms 87.2MB 270ms 30ms openjdk 23
java 1a-m.java 194ms 8.6ms 50.1MB 297ms 23ms openjdk 21
java 1-m.java 195ms 8.1ms 113.2MB 303ms 40ms graal/jvm 17.0.8
java 1a-m.java 208ms 3.1ms 98.6MB 310ms 37ms graal/jvm 17.0.8
java 1b-m.java 250ms 12ms 101.3MB 427ms 43ms graal/jvm 17.0.8
java 1b.java 308ms 5.9ms 47.9MB 297ms 137ms openjdk/zgc 21
java 1a.java 314ms 9.4ms 49.0MB 293ms 137ms openjdk/zgc 21
java 1.java 327ms 6.4ms 114.5MB 263ms 160ms openjdk/zgc 21
java 2-m.java 558ms 9.6ms 613.1MB 853ms 87ms openjdk 21
java 2-m.java 567ms 2.5ms 749.4MB 837ms 107ms openjdk 23
java 2.java 1582ms 6.0ms 1355.1MB 833ms 1047ms openjdk/zgc 21

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
c 8-i.c 268ms 0.7ms 1.5MB 260ms 0ms zigcc 0.14.1
c 8-i.c 303ms 1.7ms 2.1MB 290ms 0ms clang 14.0.0-1ubuntu1.1
c 2.c 310ms 1.5ms 2.3MB 300ms 0ms gcc 15.1.0
c 2.c 312ms 1.1ms 1.5MB 300ms 0ms zigcc 0.14.1
c 5.c 314ms 2.4ms 2.3MB 303ms 0ms gcc 15.1.0
c 5.c 315ms 1.3ms 2.1MB 307ms 0ms clang 14.0.0-1ubuntu1.1
c 5.c 316ms 1.0ms 1.5MB 310ms 0ms zigcc 0.14.1
c 2.c 317ms 0.2ms 2.1MB 310ms 0ms clang 14.0.0-1ubuntu1.1
c 8-i.c 336ms 0.3ms 2.3MB 330ms 0ms gcc 15.1.0
java 1.java 442ms 1.6ms 81.4MB 473ms 23ms graal/jvm 17.0.8
java 1.java 445ms 1.9ms 47.7MB 480ms 17ms openjdk 23
java 1.java 446ms 15ms 45.2MB 487ms 13ms openjdk 21
java 1.java 567ms 4.2ms 44.9MB 490ms 140ms openjdk/zgc 21
java 2.java 1238ms 17ms 608.0MB 1377ms 77ms openjdk 21
java 2.java 1243ms 5.5ms 744.5MB 1360ms 97ms openjdk 23
java 2.java 3248ms 81ms 2438.6MB 1660ms 1800ms 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 32ms 0.4ms 2.1MB 23ms 0ms clang 14.0.0-1ubuntu1.1
c 5.c 34ms 0.4ms 2.3MB 30ms 0ms gcc 15.1.0
c 2.c 34ms 0.1ms 1.5MB 30ms 0ms zigcc 0.14.1
c 5.c 34ms 0.4ms 2.1MB 27ms 0ms clang 14.0.0-1ubuntu1.1
c 2.c 34ms 0.3ms 2.3MB 30ms 0ms gcc 15.1.0
c 2.c 34ms 0.4ms 2.1MB 30ms 0ms clang 14.0.0-1ubuntu1.1
c 5.c 34ms 0.6ms 1.5MB 30ms 0ms zigcc 0.14.1
c 8-i.c 36ms 0.2ms 2.3MB 30ms 0ms gcc 15.1.0
java 1.java 116ms 4.3ms 45.3MB 153ms 20ms openjdk 21
java 1.java 121ms 0.2ms 47.8MB 153ms 17ms openjdk 23
java 1-m.java 122ms 8.7ms 81.5MB 153ms 33ms graal/jvm 17.0.8
java 1.java 247ms 2.0ms 44.8MB 173ms 140ms openjdk/zgc 21
java 2-m.java 291ms 5.9ms 373.0MB 427ms 53ms openjdk 21
java 2-m.java 307ms 7.7ms 397.4MB 443ms 67ms openjdk 23
java 2.java 671ms 7.7ms 522.5MB 477ms 387ms openjdk/zgc 21

nsieve

Input: 12

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
c 1.c 266ms 3.7ms 40.9MB 250ms 0ms gcc 15.1.0
c 1.c 268ms 5.1ms 41.0MB 253ms 0ms clang 14.0.0-1ubuntu1.1
c 1.c 283ms 6.3ms 40.3MB 270ms 0ms zigcc 0.14.1
java 1.java 387ms 7.8ms 118.0MB 423ms 27ms openjdk 23
java 1.java 394ms 5.7ms 115.1MB 443ms 27ms openjdk 21
java 1.java 562ms 3.9ms 112.6MB 470ms 167ms openjdk/zgc 21
java 1-m.java 600ms 11ms 206.8MB 877ms 60ms graal/jvm 17.0.8
java 2.java 775ms 5.6ms 57.1MB 827ms 23ms openjdk 21
java 2.java 783ms 4.2ms 60.4MB 833ms 17ms openjdk 23
java 2.java 839ms 5.9ms 53.4MB 773ms 137ms openjdk/zgc 21
java 2-m.java 1323ms 9.8ms 232.4MB 2367ms 107ms graal/jvm 17.0.8

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
c 1.c 54ms 5.0ms 11.6MB 43ms 0ms gcc 15.1.0
c 1.c 55ms 3.1ms 11.7MB 43ms 0ms clang 14.0.0-1ubuntu1.1
c 1.c 59ms 2.4ms 11.0MB 50ms 0ms zigcc 0.14.1
java 1.java 151ms 1.0ms 68.0MB 197ms 20ms openjdk 23
java 1.java 152ms 7.0ms 64.9MB 203ms 13ms openjdk 21
java 1-m.java 195ms 2.0ms 123.9MB 273ms 37ms graal/jvm 17.0.8
java 2.java 259ms 2.0ms 50.4MB 310ms 20ms openjdk 23
java 2.java 259ms 2.3ms 50.0MB 323ms 13ms openjdk 21
java 1.java 285ms 7.4ms 61.4MB 207ms 150ms openjdk/zgc 21
java 2.java 366ms 2.5ms 47.6MB 303ms 140ms openjdk/zgc 21
java 2-m.java 471ms 0.4ms 190.4MB 827ms 67ms 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 744ms 14ms 2.0MB 2913ms 0ms gcc 15.1.0
c 6-im.c 951ms 1.1ms 2.0MB 3750ms 0ms gcc 15.1.0
c 4-m.c 990ms 3.6ms 2.1MB 3893ms 0ms gcc 15.1.0
c 6-im.c 1002ms 3.4ms 3.4MB 3940ms 0ms clang 14.0.0-1ubuntu1.1
c 4-m.c 1118ms 0.6ms 3.1MB 4400ms 3ms clang 14.0.0-1ubuntu1.1
c 5-im.c 1149ms 13ms 2.0MB 4520ms 0ms gcc 15.1.0
c 5-im.c 1338ms 17ms 3.3MB 5263ms 3ms clang 14.0.0-1ubuntu1.1
c 3-m.c 1841ms 23ms 3.3MB 7240ms 7ms clang 14.0.0-1ubuntu1.1
java 2-m.java 1989ms 3.1ms 47.7MB 7617ms 27ms openjdk 21
java 2-m.java 1990ms 13ms 48.5MB 7613ms 23ms openjdk 23
java 2-m.java 2120ms 13ms 45.5MB 7643ms 150ms openjdk/zgc 21
java 2-m.java 2517ms 4.4ms 95.1MB 9440ms 40ms 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 193ms 0.4ms 2.0MB 737ms 0ms gcc 15.1.0
c 6-im.c 245ms 0.2ms 2.0MB 937ms 0ms gcc 15.1.0
c 6-im.c 258ms 0.6ms 3.1MB 987ms 0ms clang 14.0.0-1ubuntu1.1
c 4-m.c 261ms 3.1ms 2.0MB 1000ms 0ms gcc 15.1.0
c 4-m.c 287ms 0.9ms 3.3MB 1103ms 0ms clang 14.0.0-1ubuntu1.1
c 5-im.c 293ms 0.6ms 2.0MB 1130ms 0ms gcc 15.1.0
c 5-im.c 340ms 0.6ms 3.3MB 1310ms 0ms clang 14.0.0-1ubuntu1.1
c 3-m.c 463ms 0.0ms 3.3MB 1807ms 0ms clang 14.0.0-1ubuntu1.1
java 2-m.java 605ms 4.4ms 47.8MB 2147ms 20ms openjdk 21
java 2-m.java 612ms 11ms 48.8MB 2177ms 23ms openjdk 23
java 2-m.java 724ms 6.4ms 45.4MB 2113ms 143ms openjdk/zgc 21
java 2-m.java 765ms 8.2ms 94.9MB 2697ms 33ms 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 58ms 5.3ms 2.0MB 203ms 0ms gcc 15.1.0
c 6-im.c 68ms 0.4ms 2.0MB 243ms 0ms gcc 15.1.0
c 6-im.c 70ms 0.3ms 3.3MB 247ms 0ms clang 14.0.0-1ubuntu1.1
c 4-m.c 72ms 0.6ms 2.1MB 260ms 0ms gcc 15.1.0
c 4-m.c 77ms 0.2ms 3.0MB 280ms 0ms clang 14.0.0-1ubuntu1.1
c 5-im.c 80ms 0.2ms 2.0MB 290ms 0ms gcc 15.1.0
c 5-im.c 92ms 0.5ms 3.3MB 330ms 0ms clang 14.0.0-1ubuntu1.1
c 3-m.c 122ms 0.9ms 3.3MB 450ms 0ms clang 14.0.0-1ubuntu1.1
java 2-m.java 252ms 7.4ms 47.9MB 763ms 17ms openjdk 21
java 2-m.java 258ms 6.1ms 48.6MB 780ms 17ms openjdk 23
java 2-m.java 303ms 24ms 93.3MB 927ms 37ms graal/jvm 17.0.8
java 2-m.java 376ms 7.1ms 45.5MB 770ms 140ms openjdk/zgc 21