C VS Java benchmarks

Current benchmark data was generated on Mon Apr 14 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.1ms 1.3MB 0ms 0ms zigcc 0.14.0
c 1.c 1.2ms 0.1ms 2.1MB 0ms 0ms clang 14.0.0-1ubuntu1.1
c 1.c 1.2ms 0.1ms 2.1MB 0ms 0ms gcc 14.2.0
java 1.java 63ms 1.5ms 52.7MB 70ms 20ms graal/jvm 17.0.8
java 1.java 72ms 3.3ms 44.4MB 74ms 20ms openjdk 23
java 1.java 73ms 1.7ms 43.8MB 80ms 14ms openjdk 21
java 1.java 193ms 6.2ms 43.0MB 84ms 140ms 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 182ms 2.9ms 24.5MB 420ms 7ms gcc 14.2.0
c 1-m.c 291ms 5.0ms 25.9MB 980ms 17ms clang 14.0.0-1ubuntu1.1
java 3-m.java 1010ms 47ms 129.8MB 3437ms 37ms openjdk 21
java 3-m.java 1095ms 25ms 156.9MB 3717ms 67ms openjdk 23
java 3-m.java 1123ms 19ms 177.6MB 3827ms 70ms graal/jvm 17.0.8
java 3-m.java 1402ms 51ms 179.1MB 4423ms 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 28ms 2.9ms 12.1MB 63ms 0ms gcc 14.2.0
c 1-m.c 35ms 0.6ms 15.1MB 100ms 0ms clang 14.0.0-1ubuntu1.1
java 3-m.java 346ms 19ms 139.5MB 977ms 53ms graal/jvm 17.0.8
java 3-m.java 346ms 13ms 101.8MB 1000ms 40ms openjdk 21
java 3-m.java 346ms 17ms 89.2MB 1033ms 43ms openjdk 23
java 3-m.java 436ms 1.7ms 98.6MB 903ms 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 230ms 12ms 7.4MB 857ms 17ms clang 14.0.0-1ubuntu1.1
c 1-mffi.c 265ms 1.9ms 6.7MB 807ms 0ms gcc 14.2.0
c 1-ffi.c 330ms 1.2ms 5.9MB 320ms 0ms zigcc 0.14.0
c 1-mffi.c 330ms 0.9ms 5.9MB 320ms 0ms zigcc 0.14.0
c 1-ffi.c 452ms 1.5ms 6.4MB 440ms 0ms clang 14.0.0-1ubuntu1.1
c 1-ffi.c 542ms 1.6ms 6.7MB 530ms 0ms gcc 14.2.0
java 1b.java 1159ms 21ms 54.2MB 1270ms 23ms openjdk 21
java 1b.java 1159ms 17ms 55.4MB 1260ms 27ms openjdk 23
java 1b.java 1192ms 4.2ms 109.8MB 1433ms 40ms graal/jvm 17.0.8
java 1.java 1254ms 4.6ms 136.4MB 1363ms 50ms graal/jvm 17.0.8
java 1b.java 1272ms 4.5ms 51.2MB 1250ms 143ms openjdk/zgc 21
java 1a.java 1655ms 4.3ms 55.0MB 1750ms 23ms openjdk 21
java 1a.java 1666ms 2.2ms 56.4MB 1763ms 33ms openjdk 23
java 1a.java 1688ms 10ms 102.4MB 1807ms 43ms graal/jvm 17.0.8
java 1.java 1699ms 3.2ms 254.4MB 1770ms 43ms openjdk 21
java 1.java 1720ms 3.4ms 336.0MB 1787ms 50ms openjdk 23
java 1a.java 1779ms 9.0ms 51.4MB 1753ms 150ms openjdk/zgc 21
java 1.java 2354ms 1.7ms 859.1MB 1800ms 657ms openjdk/zgc 21
java 2.java timeout 0.0ms 744.5MB 5260ms 140ms openjdk 21
java 2.java timeout 0.0ms 818.4MB 5390ms 137ms openjdk 23
java 2.java timeout 0.0ms 3364.6MB 3493ms 1890ms openjdk/zgc 21

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
c 1-mffi.c 15ms 0.5ms 4.8MB 30ms 0ms clang 14.0.0-1ubuntu1.1
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 17ms 1.6ms 3.6MB 43ms 0ms gcc 14.2.0
c 1-ffi.c 22ms 0.3ms 3.6MB 10ms 0ms clang 14.0.0-1ubuntu1.1
c 1-ffi.c 26ms 0.9ms 3.6MB 20ms 0ms gcc 14.2.0
java 1b-m.java 179ms 8.2ms 51.3MB 267ms 23ms openjdk 23
java 1-m.java 192ms 1.2ms 81.6MB 270ms 27ms openjdk 21
java 1a-m.java 194ms 6.6ms 51.0MB 300ms 20ms openjdk 21
java 1b-m.java 198ms 17ms 49.5MB 313ms 23ms openjdk 21
java 1.java 201ms 9.8ms 87.3MB 270ms 30ms openjdk 23
java 1a-m.java 202ms 6.2ms 52.6MB 310ms 23ms openjdk 23
java 1-m.java 207ms 12ms 114.4MB 320ms 43ms graal/jvm 17.0.8
java 1a-m.java 207ms 6.5ms 98.8MB 313ms 40ms graal/jvm 17.0.8
java 1b-m.java 244ms 39ms 103.4MB 420ms 43ms graal/jvm 17.0.8
java 1a.java 315ms 5.7ms 47.9MB 297ms 143ms openjdk/zgc 21
java 1b.java 320ms 12ms 48.0MB 320ms 140ms openjdk/zgc 21
java 1.java 337ms 2.0ms 114.6MB 270ms 170ms openjdk/zgc 21
java 2-m.java 551ms 14ms 629.1MB 833ms 87ms openjdk 21
java 2-m.java 605ms 19ms 809.9MB 897ms 120ms openjdk 23
java 2.java 1587ms 1.4ms 1374.8MB 860ms 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 267ms 0.5ms 1.5MB 260ms 0ms zigcc 0.14.0
c 8-i.c 302ms 1.0ms 2.1MB 290ms 0ms clang 14.0.0-1ubuntu1.1
c 2.c 311ms 0.4ms 2.3MB 300ms 0ms gcc 14.2.0
c 5.c 315ms 0.7ms 2.3MB 303ms 0ms gcc 14.2.0
c 2.c 315ms 1.4ms 1.5MB 310ms 0ms zigcc 0.14.0
c 5.c 315ms 0.9ms 1.5MB 307ms 0ms zigcc 0.14.0
c 5.c 318ms 3.4ms 2.1MB 310ms 0ms clang 14.0.0-1ubuntu1.1
c 2.c 320ms 0.6ms 2.1MB 310ms 0ms clang 14.0.0-1ubuntu1.1
c 8-i.c 334ms 0.4ms 2.3MB 323ms 0ms gcc 14.2.0
java 1.java 449ms 6.5ms 81.4MB 477ms 30ms graal/jvm 17.0.8
java 1.java 451ms 0.4ms 48.3MB 487ms 17ms openjdk 23
java 1.java 457ms 15ms 45.3MB 490ms 17ms openjdk 21
java 1.java 571ms 1.4ms 44.9MB 493ms 137ms openjdk/zgc 21
java 2.java 1260ms 11ms 640.1MB 1390ms 87ms openjdk 21
java 2.java 1275ms 9.1ms 826.3MB 1380ms 123ms openjdk 23
java 2.java 3279ms 125ms 2446.0MB 1647ms 1853ms 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.2ms 1.5MB 20ms 0ms zigcc 0.14.0
c 8-i.c 33ms 0.4ms 2.1MB 23ms 0ms clang 14.0.0-1ubuntu1.1
c 5.c 34ms 0.3ms 2.3MB 30ms 0ms gcc 14.2.0
c 5.c 34ms 0.5ms 1.5MB 27ms 0ms zigcc 0.14.0
c 2.c 34ms 0.6ms 2.3MB 27ms 0ms gcc 14.2.0
c 2.c 34ms 0.2ms 1.5MB 30ms 0ms zigcc 0.14.0
c 2.c 35ms 0.8ms 2.1MB 30ms 0ms clang 14.0.0-1ubuntu1.1
c 5.c 35ms 0.7ms 2.1MB 30ms 0ms clang 14.0.0-1ubuntu1.1
c 8-i.c 36ms 0.2ms 2.3MB 30ms 0ms gcc 14.2.0
java 1.java 118ms 2.8ms 81.5MB 143ms 30ms graal/jvm 17.0.8
java 1.java 123ms 2.0ms 45.2MB 163ms 20ms openjdk 21
java 1.java 124ms 4.2ms 48.2MB 157ms 20ms openjdk 23
java 1.java 251ms 4.1ms 44.9MB 173ms 140ms openjdk/zgc 21
java 2-m.java 305ms 5.3ms 394.5MB 447ms 60ms openjdk 21
java 2-m.java 328ms 5.1ms 392.1MB 470ms 70ms openjdk 23
java 2.java 687ms 2.7ms 524.4MB 477ms 407ms openjdk/zgc 21

nsieve

Input: 12

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
c 1.c 279ms 1.8ms 40.9MB 263ms 0ms clang 14.0.0-1ubuntu1.1
c 1.c 281ms 2.9ms 40.2MB 263ms 0ms zigcc 0.14.0
c 1.c 301ms 7.8ms 41.0MB 283ms 0ms gcc 14.2.0
java 1.java 431ms 12ms 115.9MB 483ms 23ms openjdk 21
java 1.java 477ms 33ms 118.4MB 523ms 27ms openjdk 23
java 1-m.java 620ms 8.0ms 218.4MB 897ms 63ms graal/jvm 17.0.8
java 1.java 625ms 9.3ms 112.7MB 537ms 163ms openjdk/zgc 21
java 2.java 782ms 2.9ms 56.8MB 840ms 17ms openjdk 21
java 2.java 801ms 16ms 60.2MB 853ms 20ms openjdk 23
java 2.java 850ms 3.1ms 53.3MB 780ms 147ms openjdk/zgc 21
java 2-m.java 1327ms 5.9ms 242.0MB 2380ms 100ms 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.6ms 11.8MB 40ms 0ms gcc 14.2.0
c 1.c 53ms 0.9ms 11.5MB 40ms 0ms clang 14.0.0-1ubuntu1.1
c 1.c 59ms 3.0ms 11.0MB 50ms 0ms zigcc 0.14.0
java 1.java 154ms 3.2ms 64.7MB 203ms 20ms openjdk 21
java 1.java 160ms 4.0ms 68.3MB 207ms 20ms openjdk 23
java 1-m.java 205ms 7.0ms 124.6MB 293ms 37ms graal/jvm 17.0.8
java 2.java 265ms 1.0ms 49.9MB 323ms 27ms openjdk 21
java 2.java 271ms 2.5ms 50.6MB 327ms 23ms openjdk 23
java 1.java 288ms 1.8ms 61.5MB 213ms 147ms openjdk/zgc 21
java 2.java 374ms 4.3ms 47.6MB 313ms 143ms openjdk/zgc 21
java 2-m.java 478ms 6.0ms 149.5MB 853ms 60ms 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 963ms 12ms 2.0MB 3780ms 0ms gcc 14.2.0
c 4-m.c 965ms 1.5ms 2.0MB 3797ms 0ms gcc 14.2.0
c 6-im.c 1008ms 5.5ms 3.3MB 3950ms 3ms clang 14.0.0-1ubuntu1.1
c 5-im.c 1088ms 1.2ms 2.0MB 4290ms 0ms gcc 14.2.0
c 4-m.c 1122ms 3.5ms 3.3MB 4407ms 0ms clang 14.0.0-1ubuntu1.1
c 5-im.c 1342ms 23ms 3.3MB 5257ms 0ms clang 14.0.0-1ubuntu1.1
c 3-m.c 1834ms 11ms 3.1MB 7227ms 7ms clang 14.0.0-1ubuntu1.1
c 3-m.c 1969ms 3.6ms 2.0MB 7777ms 0ms gcc 14.2.0
java 2-m.java 1996ms 8.8ms 47.7MB 7623ms 27ms openjdk 21
java 2-m.java 2011ms 5.1ms 48.3MB 7643ms 27ms openjdk 23
java 2-m.java 2140ms 20ms 45.4MB 7653ms 150ms openjdk/zgc 21
java 2-m.java 2509ms 8.6ms 94.2MB 9357ms 43ms 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 1.3ms 2.0MB 947ms 0ms gcc 14.2.0
c 4-m.c 255ms 2.8ms 2.0MB 973ms 0ms gcc 14.2.0
c 6-im.c 269ms 18ms 3.3MB 1007ms 3ms clang 14.0.0-1ubuntu1.1
c 5-im.c 284ms 3.3ms 2.0MB 1090ms 0ms gcc 14.2.0
c 4-m.c 289ms 1.8ms 3.1MB 1103ms 0ms clang 14.0.0-1ubuntu1.1
c 5-im.c 341ms 1.0ms 3.3MB 1310ms 0ms clang 14.0.0-1ubuntu1.1
c 3-m.c 467ms 6.6ms 3.3MB 1810ms 0ms clang 14.0.0-1ubuntu1.1
c 3-m.c 497ms 0.7ms 2.0MB 1937ms 0ms gcc 14.2.0
java 2-m.java 607ms 5.8ms 47.6MB 2140ms 23ms openjdk 21
java 2-m.java 621ms 7.5ms 48.9MB 2170ms 23ms openjdk 23
java 2-m.java 743ms 7.4ms 45.4MB 2183ms 143ms openjdk/zgc 21
java 2-m.java 769ms 3.8ms 95.1MB 2703ms 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 69ms 0.2ms 2.0MB 250ms 0ms gcc 14.2.0
c 4-m.c 71ms 0.4ms 2.0MB 253ms 0ms gcc 14.2.0
c 6-im.c 71ms 1.3ms 3.3MB 250ms 0ms clang 14.0.0-1ubuntu1.1
c 4-m.c 78ms 0.9ms 3.1MB 280ms 0ms clang 14.0.0-1ubuntu1.1
c 5-im.c 79ms 1.7ms 2.0MB 283ms 0ms gcc 14.2.0
c 5-im.c 91ms 0.7ms 3.0MB 330ms 0ms clang 14.0.0-1ubuntu1.1
c 3-m.c 122ms 1.0ms 3.3MB 450ms 0ms clang 14.0.0-1ubuntu1.1
c 3-m.c 131ms 0.8ms 2.0MB 490ms 0ms gcc 14.2.0
java 2-m.java 248ms 3.4ms 47.9MB 757ms 17ms openjdk 21
java 2-m.java 270ms 8.8ms 48.8MB 790ms 27ms openjdk 23
java 2-m.java 321ms 25ms 94.1MB 983ms 40ms graal/jvm 17.0.8
java 2-m.java 400ms 6.1ms 45.6MB 820ms 153ms openjdk/zgc 21