C VS Java benchmarks

Current benchmark data was generated on Tue Dec 31 2024, 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 0.9ms 0.0ms 1.4MB 0ms 0ms zigcc 0.13.0
c 1.c 1.2ms 0.0ms 2.1MB 0ms 0ms gcc 14.2.0
c 1.c 1.3ms 0.2ms 2.1MB 0ms 0ms clang 14.0.0-1ubuntu1.1
java 1.java 61ms 1.3ms 58.6MB 60ms 20ms graal/jvm 17.0.8
java 1.java 69ms 2.9ms 44.7MB 66ms 14ms openjdk 23
java 1.java 69ms 1.0ms 43.8MB 72ms 10ms openjdk 21
java 1.java 174ms 5.3ms 44.5MB 80ms 116ms 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 175ms 15ms 26.1MB 410ms 7ms gcc 14.2.0
c 1-m.c 282ms 6.9ms 29.6MB 953ms 30ms clang 14.0.0-1ubuntu1.1
java 3-m.java 957ms 65ms 126.8MB 3243ms 40ms openjdk 21
java 3-m.java 1032ms 55ms 183.8MB 3450ms 77ms graal/jvm 17.0.8
java 3-m.java 1036ms 18ms 156.5MB 3543ms 47ms openjdk 23
java 3-m.java 1340ms 52ms 178.8MB 4223ms 190ms 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.6ms 13.2MB 57ms 3ms gcc 14.2.0
c 1-m.c 35ms 1.3ms 14.9MB 103ms 0ms clang 14.0.0-1ubuntu1.1
java 3-m.java 311ms 28ms 87.9MB 907ms 17ms openjdk 23
java 3-m.java 328ms 29ms 100.2MB 973ms 30ms openjdk 21
java 3-m.java 356ms 16ms 139.7MB 963ms 53ms graal/jvm 17.0.8
java 3-m.java 401ms 8.3ms 100.0MB 823ms 167ms openjdk/zgc 21

mandelbrot

Input: 5000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
c 1-mffi.c 207ms 11ms 9.4MB 763ms 10ms clang 14.0.0-1ubuntu1.1
c 1-mffi.c 257ms 3.9ms 6.6MB 780ms 0ms gcc 14.2.0
c 1-mffi.c 410ms 4.7ms 6.0MB 397ms 0ms zigcc 0.13.0
c 1-ffi.c 411ms 7.0ms 6.0MB 403ms 0ms zigcc 0.13.0
c 1-ffi.c 429ms 6.2ms 6.7MB 417ms 0ms clang 14.0.0-1ubuntu1.1
c 1-ffi.c 509ms 5.2ms 6.6MB 500ms 0ms gcc 14.2.0
java 1b.java 1088ms 25ms 55.9MB 1183ms 20ms openjdk 23
java 1b.java 1099ms 9.8ms 54.1MB 1203ms 10ms openjdk 21
java 1b.java 1140ms 3.0ms 114.0MB 1380ms 43ms graal/jvm 17.0.8
java 1.java 1186ms 11ms 134.8MB 1287ms 43ms graal/jvm 17.0.8
java 1b.java 1206ms 5.6ms 51.0MB 1187ms 130ms openjdk/zgc 21
java 1a.java 1561ms 13ms 54.8MB 1640ms 30ms openjdk 21
java 1a.java 1568ms 7.1ms 56.5MB 1640ms 33ms openjdk 23
java 1a.java 1588ms 7.8ms 104.9MB 1690ms 37ms graal/jvm 17.0.8
java 1.java 1614ms 17ms 299.9MB 1663ms 50ms openjdk 23
java 1.java 1619ms 19ms 202.2MB 1683ms 37ms openjdk 21
java 1a.java 1691ms 11ms 53.0MB 1660ms 133ms openjdk/zgc 21
java 1.java 2222ms 9.3ms 839.9MB 1657ms 657ms openjdk/zgc 21
java 2.java timeout 0.0ms 680.4MB 5250ms 110ms openjdk 21
java 2.java timeout 0.0ms 804.6MB 5267ms 103ms openjdk 23
java 2.java timeout 0.0ms 3394.0MB 3423ms 1930ms 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.9ms 8.5MB 23ms 0ms clang 14.0.0-1ubuntu1.1
c 1-ffi.c 19ms 0.1ms 3.0MB 10ms 0ms zigcc 0.13.0
c 1-mffi.c 19ms 0.1ms 3.0MB 10ms 0ms zigcc 0.13.0
c 1-ffi.c 21ms 0.1ms 3.8MB 10ms 0ms clang 14.0.0-1ubuntu1.1
c 1-mffi.c 23ms 1.2ms 5.6MB 60ms 0ms gcc 14.2.0
c 1-ffi.c 24ms 0.3ms 3.6MB 17ms 0ms gcc 14.2.0
java 1b-m.java 168ms 7.4ms 51.1MB 263ms 17ms openjdk 23
java 1b-m.java 170ms 15ms 49.4MB 277ms 13ms openjdk 21
java 1a-m.java 174ms 1.1ms 51.2MB 267ms 17ms openjdk 21
java 1-m.java 178ms 1.8ms 82.0MB 243ms 27ms openjdk 21
java 1-m.java 181ms 5.7ms 87.0MB 250ms 27ms openjdk 23
java 1a-m.java 183ms 9.6ms 53.2MB 283ms 17ms openjdk 23
java 1-m.java 188ms 1.2ms 117.5MB 273ms 50ms graal/jvm 17.0.8
java 1a-m.java 205ms 3.9ms 100.0MB 310ms 33ms graal/jvm 17.0.8
java 1b-m.java 215ms 23ms 105.6MB 353ms 43ms graal/jvm 17.0.8
java 1a.java 293ms 9.5ms 49.8MB 270ms 133ms openjdk/zgc 21
java 1b.java 303ms 9.4ms 49.6MB 287ms 133ms openjdk/zgc 21
java 1.java 319ms 10ms 114.2MB 250ms 153ms openjdk/zgc 21
java 2-m.java 516ms 21ms 556.8MB 793ms 73ms openjdk 21
java 2-m.java 532ms 10ms 751.9MB 800ms 93ms openjdk 23
java 2.java 1560ms 7.7ms 1436.9MB 800ms 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 233ms 2.3ms 1.5MB 223ms 0ms zigcc 0.13.0
c 5.c 280ms 2.5ms 1.5MB 270ms 0ms zigcc 0.13.0
c 8-i.c 289ms 1.5ms 2.1MB 280ms 0ms clang 14.0.0-1ubuntu1.1
c 2.c 291ms 2.9ms 2.3MB 280ms 0ms gcc 14.2.0
c 2.c 297ms 4.6ms 1.5MB 287ms 0ms zigcc 0.13.0
c 5.c 300ms 5.4ms 2.3MB 287ms 0ms gcc 14.2.0
c 5.c 301ms 3.6ms 2.1MB 293ms 0ms clang 14.0.0-1ubuntu1.1
c 2.c 303ms 3.9ms 2.1MB 293ms 0ms clang 14.0.0-1ubuntu1.1
c 8-i.c 317ms 4.6ms 2.3MB 307ms 0ms gcc 14.2.0
java 1.java 417ms 2.4ms 45.2MB 450ms 13ms openjdk 21
java 1.java 420ms 6.1ms 48.2MB 450ms 20ms openjdk 23
java 1.java 429ms 7.0ms 85.0MB 457ms 27ms graal/jvm 17.0.8
java 1.java 530ms 6.4ms 46.5MB 450ms 130ms openjdk/zgc 21
java 2.java 1166ms 4.4ms 571.8MB 1293ms 77ms openjdk 21
java 2.java 1187ms 9.7ms 717.8MB 1287ms 90ms openjdk 23
java 2.java 3101ms 57ms 2431.6MB 1560ms 1743ms 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 30ms 0.2ms 1.5MB 20ms 0ms zigcc 0.13.0
c 8-i.c 30ms 0.4ms 2.1MB 20ms 0ms clang 14.0.0-1ubuntu1.1
c 2.c 31ms 0.4ms 1.5MB 20ms 0ms zigcc 0.13.0
c 2.c 31ms 0.4ms 2.3MB 20ms 0ms gcc 14.2.0
c 5.c 32ms 0.8ms 2.1MB 20ms 0ms clang 14.0.0-1ubuntu1.1
c 5.c 32ms 0.5ms 2.3MB 20ms 0ms gcc 14.2.0
c 2.c 33ms 1.7ms 2.1MB 23ms 0ms clang 14.0.0-1ubuntu1.1
c 8-i.c 33ms 0.3ms 2.3MB 23ms 0ms gcc 14.2.0
java 1.java 111ms 2.5ms 45.2MB 137ms 20ms openjdk 21
java 1.java 112ms 0.7ms 87.3MB 130ms 30ms graal/jvm 17.0.8
java 1.java 114ms 1.2ms 48.5MB 140ms 20ms openjdk 23
java 1.java 230ms 5.1ms 46.5MB 150ms 133ms openjdk/zgc 21
java 2-m.java 289ms 6.3ms 348.4MB 407ms 70ms openjdk 23
java 2-m.java 293ms 18ms 355.0MB 440ms 30ms openjdk 21
java 2.java 658ms 2.3ms 536.9MB 437ms 403ms openjdk/zgc 21

nsieve

Input: 12

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
c 1.c 247ms 8.8ms 40.9MB 227ms 3ms gcc 14.2.0
c 1.c 249ms 8.5ms 40.8MB 230ms 3ms clang 14.0.0-1ubuntu1.1
c 1.c 261ms 8.3ms 40.3MB 243ms 0ms zigcc 0.13.0
java 1.java 367ms 5.0ms 118.1MB 397ms 27ms openjdk 23
java 1.java 367ms 3.8ms 114.6MB 413ms 27ms openjdk 21
java 1.java 535ms 4.6ms 114.6MB 440ms 157ms openjdk/zgc 21
java 1-m.java 654ms 9.2ms 208.3MB 983ms 70ms graal/jvm 17.0.8
java 2.java 734ms 5.2ms 57.1MB 777ms 23ms openjdk 21
java 2.java 750ms 10ms 60.4MB 790ms 20ms openjdk 23
java 2.java 804ms 11ms 53.3MB 740ms 130ms openjdk/zgc 21
java 2-m.java 1277ms 30ms 265.2MB 2290ms 83ms 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 2.3ms 11.8MB 37ms 0ms gcc 14.2.0
c 1.c 50ms 3.8ms 11.5MB 40ms 0ms clang 14.0.0-1ubuntu1.1
c 1.c 55ms 3.7ms 11.0MB 43ms 0ms zigcc 0.13.0
java 1.java 140ms 4.3ms 68.2MB 177ms 17ms openjdk 23
java 1.java 151ms 8.4ms 65.3MB 200ms 17ms openjdk 21
java 1-m.java 210ms 26ms 127.6MB 297ms 50ms graal/jvm 17.0.8
java 2.java 244ms 4.8ms 50.3MB 297ms 20ms openjdk 21
java 2.java 249ms 5.7ms 50.9MB 290ms 20ms openjdk 23
java 1.java 264ms 1.7ms 63.3MB 193ms 133ms openjdk/zgc 21
java 2.java 348ms 11ms 49.4MB 273ms 137ms openjdk/zgc 21
java 2-m.java 489ms 42ms 151.7MB 883ms 47ms graal/jvm 17.0.8

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
c 4-m.c 912ms 4.9ms 4.1MB 3580ms 0ms gcc 14.2.0
c 6-im.c 916ms 6.9ms 4.1MB 3603ms 0ms gcc 14.2.0
c 6-im.c 957ms 5.6ms 7.3MB 3750ms 3ms clang 14.0.0-1ubuntu1.1
c 5-im.c 1032ms 4.9ms 4.1MB 4060ms 0ms gcc 14.2.0
c 4-m.c 1101ms 27ms 5.1MB 4260ms 13ms clang 14.0.0-1ubuntu1.1
c 5-im.c 1258ms 3.2ms 5.2MB 4933ms 7ms clang 14.0.0-1ubuntu1.1
c 3-m.c 1730ms 10ms 7.2MB 6810ms 3ms clang 14.0.0-1ubuntu1.1
java 2-m.java 1867ms 20ms 47.6MB 7143ms 20ms openjdk 21
c 3-m.c 1868ms 12ms 4.1MB 7353ms 7ms gcc 14.2.0
java 2-m.java 1877ms 26ms 49.0MB 7130ms 20ms openjdk 23
java 2-m.java 1981ms 11ms 45.4MB 7137ms 137ms openjdk/zgc 21
java 2-m.java 2318ms 11ms 100.9MB 8233ms 47ms 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 242ms 7.9ms 4.0MB 927ms 0ms gcc 14.2.0
c 6-im.c 249ms 5.3ms 5.3MB 937ms 3ms clang 14.0.0-1ubuntu1.1
c 6-im.c 250ms 20ms 4.0MB 937ms 0ms gcc 14.2.0
c 4-m.c 272ms 1.5ms 5.1MB 1027ms 0ms clang 14.0.0-1ubuntu1.1
c 5-im.c 278ms 9.7ms 4.0MB 1050ms 0ms gcc 14.2.0
c 5-im.c 327ms 5.4ms 5.3MB 1250ms 0ms clang 14.0.0-1ubuntu1.1
c 3-m.c 452ms 20ms 7.3MB 1713ms 0ms clang 14.0.0-1ubuntu1.1
c 3-m.c 477ms 2.5ms 4.0MB 1860ms 0ms gcc 14.2.0
java 2-m.java 557ms 2.8ms 48.4MB 1953ms 27ms openjdk 23
java 2-m.java 558ms 2.6ms 47.5MB 1963ms 23ms openjdk 21
java 2-m.java 676ms 7.0ms 45.6MB 1957ms 140ms openjdk/zgc 21
java 2-m.java 688ms 5.7ms 98.9MB 2293ms 57ms 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 67ms 0.5ms 4.0MB 233ms 0ms gcc 14.2.0
c 6-im.c 69ms 3.3ms 7.3MB 240ms 0ms clang 14.0.0-1ubuntu1.1
c 6-im.c 70ms 6.7ms 4.0MB 240ms 0ms gcc 14.2.0
c 5-im.c 76ms 1.5ms 4.0MB 270ms 0ms gcc 14.2.0
c 4-m.c 83ms 7.1ms 5.0MB 277ms 7ms clang 14.0.0-1ubuntu1.1
c 5-im.c 89ms 2.8ms 5.1MB 320ms 0ms clang 14.0.0-1ubuntu1.1
c 3-m.c 117ms 2.1ms 5.1MB 417ms 0ms clang 14.0.0-1ubuntu1.1
c 3-m.c 126ms 1.7ms 4.0MB 470ms 0ms gcc 14.2.0
java 2-m.java 229ms 5.7ms 48.4MB 670ms 23ms openjdk 23
java 2-m.java 238ms 14ms 47.6MB 693ms 20ms openjdk 21
java 2-m.java 281ms 23ms 101.8MB 823ms 40ms graal/jvm 17.0.8
java 2-m.java 346ms 3.4ms 47.1MB 667ms 133ms openjdk/zgc 21