C VS Java benchmarks

Current benchmark data was generated on Wed Jan 22 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.4MB 0ms 0ms zigcc 0.13.0
c 1.c 1.3ms 0.2ms 2.1MB 0ms 0ms gcc 14.2.0
c 1.c 1.4ms 0.1ms 2.0MB 0ms 0ms clang 14.0.0-1ubuntu1.1
java 1.java 64ms 1.6ms 54.9MB 66ms 18ms graal/jvm 17.0.8
java 1.java 71ms 6.1ms 43.9MB 80ms 16ms openjdk 21
java 1.java 72ms 6.3ms 44.7MB 70ms 20ms openjdk 23
java 1.java 186ms 4.8ms 44.6MB 90ms 126ms 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 184ms 11ms 26.4MB 420ms 10ms gcc 14.2.0
c 1-m.c 291ms 2.0ms 29.6MB 997ms 27ms clang 14.0.0-1ubuntu1.1
java 3-m.java 1038ms 48ms 155.0MB 3503ms 50ms openjdk 23
java 3-m.java 1040ms 74ms 127.6MB 3567ms 33ms openjdk 21
java 3-m.java 1106ms 10ms 182.0MB 3770ms 73ms graal/jvm 17.0.8
java 3-m.java 1447ms 54ms 180.5MB 4570ms 197ms 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.7ms 12.7MB 63ms 0ms gcc 14.2.0
c 1-m.c 39ms 3.6ms 14.9MB 103ms 3ms clang 14.0.0-1ubuntu1.1
java 3-m.java 316ms 23ms 102.0MB 920ms 40ms openjdk 21
java 3-m.java 335ms 7.7ms 137.4MB 883ms 73ms graal/jvm 17.0.8
java 3-m.java 338ms 27ms 87.0MB 1007ms 33ms openjdk 23
java 3-m.java 419ms 1.9ms 99.3MB 853ms 173ms openjdk/zgc 21

mandelbrot

Input: 5000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
c 1-mffi.c 223ms 18ms 7.6MB 810ms 20ms clang 14.0.0-1ubuntu1.1
c 1-mffi.c 297ms 47ms 6.5MB 860ms 3ms gcc 14.2.0
c 1-ffi.c 433ms 2.9ms 6.0MB 420ms 0ms zigcc 0.13.0
c 1-mffi.c 434ms 2.5ms 6.0MB 420ms 0ms zigcc 0.13.0
c 1-ffi.c 458ms 1.7ms 6.6MB 447ms 0ms clang 14.0.0-1ubuntu1.1
c 1-ffi.c 541ms 1.6ms 6.7MB 530ms 0ms gcc 14.2.0
java 1b.java 1158ms 25ms 55.3MB 1263ms 20ms openjdk 23
java 1b.java 1184ms 8.7ms 54.4MB 1307ms 23ms openjdk 21
java 1b.java 1214ms 57ms 116.0MB 1463ms 43ms graal/jvm 17.0.8
java 1.java 1260ms 13ms 130.3MB 1363ms 53ms graal/jvm 17.0.8
java 1b.java 1264ms 5.0ms 51.2MB 1243ms 133ms openjdk/zgc 21
java 1a.java 1659ms 11ms 54.9MB 1757ms 20ms openjdk 21
java 1a.java 1661ms 3.6ms 56.4MB 1767ms 20ms openjdk 23
java 1a.java 1673ms 2.5ms 108.3MB 1783ms 33ms graal/jvm 17.0.8
java 1.java 1702ms 9.3ms 309.5MB 1767ms 47ms openjdk 23
java 1.java 1705ms 5.0ms 202.5MB 1757ms 60ms openjdk 21
java 1a.java 1773ms 9.1ms 51.9MB 1763ms 127ms openjdk/zgc 21
java 1.java 2359ms 9.8ms 858.7MB 1787ms 673ms openjdk/zgc 21
java 2.java timeout 0.0ms 658.7MB 5300ms 130ms openjdk 21
java 2.java timeout 0.0ms 778.5MB 5293ms 133ms openjdk 23
java 2.java timeout 0.0ms 3309.3MB 3390ms 1953ms openjdk/zgc 21

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
c 1-mffi.c 16ms 1.8ms 8.5MB 27ms 0ms clang 14.0.0-1ubuntu1.1
c 1-ffi.c 20ms 0.1ms 3.0MB 10ms 0ms zigcc 0.13.0
c 1-mffi.c 21ms 1.3ms 3.0MB 10ms 0ms zigcc 0.13.0
c 1-mffi.c 22ms 0.4ms 5.6MB 53ms 0ms gcc 14.2.0
c 1-ffi.c 22ms 0.5ms 3.6MB 10ms 0ms clang 14.0.0-1ubuntu1.1
c 1-ffi.c 25ms 0.1ms 3.8MB 13ms 0ms gcc 14.2.0
java 1b-m.java 183ms 13ms 52.5MB 287ms 23ms openjdk 23
java 1a-m.java 190ms 1.0ms 50.0MB 293ms 20ms openjdk 21
java 1-m.java 190ms 6.7ms 81.9MB 270ms 17ms openjdk 21
java 1b-m.java 190ms 20ms 49.8MB 300ms 17ms openjdk 21
java 1a-m.java 191ms 2.5ms 52.5MB 283ms 27ms openjdk 23
java 1-m.java 194ms 8.6ms 115.9MB 283ms 53ms graal/jvm 17.0.8
java 1-m.java 197ms 8.8ms 87.2MB 270ms 30ms openjdk 23
java 1a-m.java 214ms 15ms 104.8MB 317ms 47ms graal/jvm 17.0.8
java 1b-m.java 251ms 56ms 106.5MB 433ms 43ms graal/jvm 17.0.8
java 1b.java 304ms 3.3ms 49.7MB 293ms 140ms openjdk/zgc 21
java 1a.java 309ms 4.4ms 50.2MB 283ms 143ms openjdk/zgc 21
java 1.java 332ms 0.9ms 114.4MB 263ms 167ms openjdk/zgc 21
java 2-m.java 569ms 11ms 709.6MB 877ms 83ms openjdk 23
java 2-m.java 593ms 40ms 612.9MB 850ms 120ms openjdk 21
java 2.java 1593ms 14ms 1354.8MB 850ms 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 246ms 1.0ms 1.5MB 233ms 0ms zigcc 0.13.0
c 5.c 298ms 0.7ms 1.5MB 290ms 0ms zigcc 0.13.0
c 8-i.c 301ms 1.9ms 2.1MB 290ms 0ms clang 14.0.0-1ubuntu1.1
c 2.c 311ms 1.5ms 2.3MB 300ms 0ms gcc 14.2.0
c 5.c 311ms 0.3ms 2.3MB 300ms 0ms gcc 14.2.0
c 5.c 315ms 0.3ms 2.1MB 300ms 0ms clang 14.0.0-1ubuntu1.1
c 2.c 315ms 1.0ms 1.5MB 303ms 0ms zigcc 0.13.0
c 2.c 317ms 2.6ms 2.1MB 307ms 0ms clang 14.0.0-1ubuntu1.1
c 8-i.c 332ms 0.9ms 2.3MB 320ms 0ms gcc 14.2.0
java 1.java 441ms 1.3ms 45.2MB 483ms 17ms openjdk 21
java 1.java 445ms 3.9ms 48.2MB 477ms 23ms openjdk 23
java 1.java 445ms 1.7ms 87.1MB 467ms 30ms graal/jvm 17.0.8
java 1.java 565ms 2.0ms 44.6MB 497ms 127ms openjdk/zgc 21
java 2.java 1252ms 33ms 588.1MB 1390ms 83ms openjdk 21
java 2.java 1255ms 8.3ms 753.6MB 1367ms 107ms openjdk 23
java 2.java 3285ms 56ms 2475.9MB 1647ms 1840ms openjdk/zgc 21

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
c 8-i.c 26ms 0.1ms 1.5MB 20ms 0ms zigcc 0.13.0
c 5.c 32ms 0.2ms 1.5MB 20ms 0ms zigcc 0.13.0
c 8-i.c 32ms 0.6ms 2.1MB 23ms 0ms clang 14.0.0-1ubuntu1.1
c 2.c 33ms 0.3ms 1.5MB 20ms 0ms zigcc 0.13.0
c 2.c 33ms 0.1ms 2.3MB 23ms 0ms gcc 14.2.0
c 5.c 33ms 0.1ms 2.1MB 27ms 0ms clang 14.0.0-1ubuntu1.1
c 5.c 34ms 0.3ms 2.3MB 27ms 0ms gcc 14.2.0
c 8-i.c 35ms 0.1ms 2.3MB 27ms 0ms gcc 14.2.0
c 2.c 36ms 3.1ms 2.1MB 27ms 0ms clang 14.0.0-1ubuntu1.1
java 1.java 118ms 1.2ms 45.1MB 153ms 20ms openjdk 21
java 1.java 123ms 1.7ms 47.9MB 153ms 20ms openjdk 23
java 1.java 123ms 6.2ms 87.3MB 157ms 27ms graal/jvm 17.0.8
java 1.java 237ms 4.3ms 44.7MB 157ms 137ms openjdk/zgc 21
java 2-m.java 299ms 2.8ms 344.9MB 437ms 53ms openjdk 21
java 2-m.java 311ms 5.4ms 346.3MB 443ms 70ms openjdk 23
java 2.java 689ms 16ms 525.9MB 463ms 403ms openjdk/zgc 21

nsieve

Input: 12

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
c 1.c 257ms 1.9ms 40.9MB 240ms 0ms gcc 14.2.0
c 1.c 267ms 2.2ms 41.0MB 247ms 3ms clang 14.0.0-1ubuntu1.1
c 1.c 292ms 2.5ms 40.3MB 273ms 3ms zigcc 0.13.0
java 1.java 402ms 0.4ms 118.1MB 447ms 20ms openjdk 23
java 1.java 409ms 10ms 115.0MB 467ms 17ms openjdk 21
java 1.java 566ms 4.4ms 112.7MB 467ms 160ms openjdk/zgc 21
java 1-m.java 613ms 19ms 236.5MB 893ms 70ms graal/jvm 17.0.8
java 2.java 783ms 1.3ms 57.6MB 843ms 20ms openjdk 21
java 2.java 788ms 14ms 60.7MB 843ms 17ms openjdk 23
java 2.java 838ms 5.5ms 53.0MB 770ms 140ms openjdk/zgc 21
java 2-m.java 1347ms 43ms 203.8MB 2387ms 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 49ms 1.7ms 11.6MB 40ms 0ms gcc 14.2.0
c 1.c 51ms 2.0ms 11.7MB 37ms 0ms clang 14.0.0-1ubuntu1.1
c 1.c 54ms 2.1ms 11.0MB 40ms 0ms zigcc 0.13.0
java 1.java 155ms 5.6ms 68.1MB 207ms 20ms openjdk 23
java 1.java 157ms 1.5ms 64.9MB 207ms 17ms openjdk 21
java 1-m.java 200ms 4.4ms 130.6MB 273ms 43ms graal/jvm 17.0.8
java 2.java 260ms 2.9ms 50.2MB 320ms 23ms openjdk 21
java 2.java 266ms 6.5ms 50.5MB 307ms 23ms openjdk 23
java 1.java 285ms 4.9ms 63.4MB 210ms 140ms openjdk/zgc 21
java 2.java 365ms 1.7ms 47.4MB 303ms 133ms openjdk/zgc 21
java 2-m.java 486ms 11ms 151.2MB 857ms 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 6-im.c 969ms 4.6ms 4.1MB 3777ms 0ms gcc 14.2.0
c 4-m.c 976ms 6.3ms 4.1MB 3807ms 0ms gcc 14.2.0
c 6-im.c 1005ms 2.0ms 5.3MB 3930ms 3ms clang 14.0.0-1ubuntu1.1
c 5-im.c 1102ms 12ms 4.1MB 4300ms 0ms gcc 14.2.0
c 4-m.c 1121ms 6.6ms 5.2MB 4377ms 3ms clang 14.0.0-1ubuntu1.1
c 5-im.c 1349ms 29ms 7.3MB 5250ms 7ms clang 14.0.0-1ubuntu1.1
c 3-m.c 1870ms 63ms 7.2MB 7260ms 3ms clang 14.0.0-1ubuntu1.1
java 2-m.java 1963ms 2.5ms 47.3MB 7453ms 20ms openjdk 21
java 2-m.java 1965ms 7.5ms 48.6MB 7467ms 17ms openjdk 23
c 3-m.c 1983ms 19ms 4.1MB 7780ms 3ms gcc 14.2.0
java 2-m.java 2080ms 2.7ms 45.3MB 7453ms 143ms openjdk/zgc 21
java 2-m.java 2480ms 17ms 98.9MB 8800ms 40ms graal/jvm 17.0.8

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
c 4-m.c 253ms 0.8ms 4.1MB 963ms 0ms gcc 14.2.0
c 6-im.c 256ms 5.0ms 4.0MB 970ms 0ms gcc 14.2.0
c 6-im.c 263ms 9.0ms 5.3MB 977ms 3ms clang 14.0.0-1ubuntu1.1
c 5-im.c 291ms 13ms 4.0MB 1097ms 0ms gcc 14.2.0
c 4-m.c 292ms 5.9ms 7.0MB 1100ms 3ms clang 14.0.0-1ubuntu1.1
c 5-im.c 363ms 27ms 5.3MB 1363ms 3ms clang 14.0.0-1ubuntu1.1
c 3-m.c 474ms 12ms 7.2MB 1800ms 0ms clang 14.0.0-1ubuntu1.1
c 3-m.c 504ms 4.5ms 4.0MB 1957ms 0ms gcc 14.2.0
java 2-m.java 592ms 8.0ms 47.7MB 2083ms 13ms openjdk 21
java 2-m.java 592ms 6.7ms 48.8MB 2033ms 30ms openjdk 23
java 2-m.java 712ms 1.7ms 45.3MB 2087ms 133ms openjdk/zgc 21
java 2-m.java 739ms 6.2ms 98.0MB 2493ms 37ms graal/jvm 17.0.8

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
c 6-im.c 72ms 2.5ms 4.0MB 250ms 0ms gcc 14.2.0
c 6-im.c 72ms 0.6ms 7.3MB 240ms 0ms clang 14.0.0-1ubuntu1.1
c 4-m.c 77ms 7.1ms 4.0MB 263ms 0ms gcc 14.2.0
c 4-m.c 80ms 0.6ms 5.2MB 273ms 0ms clang 14.0.0-1ubuntu1.1
c 5-im.c 80ms 0.7ms 4.0MB 280ms 0ms gcc 14.2.0
c 5-im.c 94ms 2.4ms 5.5MB 330ms 0ms clang 14.0.0-1ubuntu1.1
c 3-m.c 124ms 0.9ms 5.1MB 443ms 0ms clang 14.0.0-1ubuntu1.1
c 3-m.c 133ms 1.5ms 4.0MB 493ms 0ms gcc 14.2.0
java 2-m.java 246ms 3.6ms 48.5MB 717ms 20ms openjdk 23
java 2-m.java 247ms 13ms 47.4MB 710ms 23ms openjdk 21
java 2-m.java 285ms 13ms 96.7MB 827ms 40ms graal/jvm 17.0.8
java 2-m.java 355ms 6.7ms 47.3MB 680ms 137ms openjdk/zgc 21