Codon VS Java benchmarks

Current benchmark data was generated on Thu May 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
codon 1-m.py 11ms 0.6ms 9.0MB 20ms 0ms codon 0.18.2
java 1.java 62ms 1.3ms 52.7MB 66ms 18ms graal/jvm 17.0.8
java 1.java 71ms 1.1ms 43.7MB 74ms 12ms openjdk 21
java 1.java 72ms 2.0ms 44.7MB 76ms 14ms openjdk 23
java 1.java 189ms 5.2ms 42.9MB 80ms 136ms openjdk/zgc 21

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1.java 440ms 3.0ms 45.1MB 477ms 20ms openjdk 21
java 1.java 444ms 1.1ms 48.2MB 480ms 20ms openjdk 23
java 1.java 447ms 4.2ms 81.5MB 483ms 27ms graal/jvm 17.0.8
java 1.java 570ms 5.4ms 44.7MB 497ms 133ms openjdk/zgc 21
java 2.java 1230ms 3.1ms 579.3MB 1353ms 83ms openjdk 21
java 2.java 1248ms 1.3ms 759.3MB 1357ms 110ms openjdk 23
codon 1.py 1317ms 2.2ms 8.9MB 1623ms 0ms codon 0.18.2
java 2.java 3219ms 18ms 2343.5MB 1627ms 1803ms openjdk/zgc 21

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1.java 119ms 2.0ms 45.2MB 157ms 20ms openjdk 21
java 1.java 120ms 1.7ms 48.4MB 157ms 20ms openjdk 23
java 1.java 125ms 4.1ms 81.6MB 153ms 33ms graal/jvm 17.0.8
codon 1-m.py 174ms 3.5ms 8.8MB 483ms 0ms codon 0.18.2
java 1.java 243ms 3.0ms 44.8MB 167ms 140ms openjdk/zgc 21
java 2-m.java 286ms 3.4ms 356.7MB 417ms 53ms openjdk 21
java 2-m.java 310ms 7.8ms 413.9MB 440ms 70ms openjdk 23
java 2.java 684ms 9.8ms 530.4MB 453ms 420ms openjdk/zgc 21

nsieve

Input: 12

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1.java 402ms 2.3ms 118.6MB 447ms 23ms openjdk 23
java 1.java 410ms 1.4ms 114.9MB 463ms 20ms openjdk 21
codon 1-m.py 444ms 7.4ms 47.7MB 747ms 0ms codon 0.18.2
java 1.java 580ms 9.2ms 112.8MB 480ms 170ms openjdk/zgc 21
java 1-m.java 624ms 34ms 271.5MB 903ms 70ms graal/jvm 17.0.8
java 2.java 781ms 2.9ms 57.3MB 840ms 17ms openjdk 21
java 2.java 782ms 2.8ms 60.3MB 833ms 23ms openjdk 23
java 2.java 841ms 5.2ms 53.3MB 770ms 140ms openjdk/zgc 21
java 2-m.java 1350ms 36ms 197.1MB 2433ms 97ms graal/jvm 17.0.8
codon 2.py 1528ms 20ms 100.8MB 1827ms 30ms codon 0.18.2

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
codon 1-m.py 127ms 3.2ms 18.4MB 427ms 0ms codon 0.18.2
java 1.java 154ms 0.3ms 68.1MB 200ms 20ms openjdk 23
java 1.java 162ms 5.3ms 65.0MB 217ms 20ms openjdk 21
java 1-m.java 205ms 14ms 137.8MB 287ms 43ms graal/jvm 17.0.8
java 2.java 259ms 1.4ms 50.0MB 323ms 17ms openjdk 21
java 2.java 262ms 7.0ms 50.4MB 310ms 17ms openjdk 23
java 1.java 287ms 3.4ms 61.6MB 210ms 147ms openjdk/zgc 21
java 2.java 370ms 1.9ms 47.3MB 310ms 143ms openjdk/zgc 21
codon 2-m.py 398ms 9.8ms 27.1MB 707ms 3ms codon 0.18.2
java 2-m.java 472ms 2.1ms 145.4MB 833ms 63ms graal/jvm 17.0.8