Codon VS Java benchmarks

Current benchmark data was generated on Sun Jun 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.4ms 8.8MB 20ms 0ms codon 0.18.2
java 1.java 62ms 2.4ms 52.7MB 68ms 18ms graal/jvm 17.0.8
java 1.java 69ms 6.7ms 43.8MB 78ms 12ms openjdk 21
java 1.java 73ms 1.7ms 44.5MB 74ms 16ms openjdk 23
java 1.java 184ms 2.0ms 42.9MB 80ms 132ms openjdk/zgc 21

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1.java 441ms 1.8ms 45.4MB 480ms 13ms openjdk 21
java 1.java 444ms 1.2ms 48.2MB 480ms 20ms openjdk 23
java 1.java 447ms 3.2ms 81.7MB 483ms 23ms graal/jvm 17.0.8
java 1.java 567ms 1.6ms 45.0MB 490ms 140ms openjdk/zgc 21
java 2.java 1230ms 1.5ms 567.4MB 1367ms 73ms openjdk 21
java 2.java 1245ms 7.7ms 792.1MB 1367ms 93ms openjdk 23
codon 1.py 1352ms 60ms 9.1MB 1657ms 0ms codon 0.18.2
java 2.java 3242ms 30ms 2411.5MB 1663ms 1800ms openjdk/zgc 21

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1.java 115ms 2.7ms 81.5MB 143ms 27ms graal/jvm 17.0.8
java 1-m.java 117ms 1.5ms 45.3MB 157ms 20ms openjdk 21
java 1.java 118ms 3.8ms 48.1MB 157ms 17ms openjdk 23
codon 1-m.py 175ms 4.2ms 8.8MB 487ms 0ms codon 0.18.2
java 1.java 241ms 4.9ms 44.6MB 157ms 140ms openjdk/zgc 21
java 2-m.java 289ms 5.6ms 371.1MB 420ms 57ms openjdk 21
java 2-m.java 305ms 7.2ms 418.7MB 450ms 57ms openjdk 23
java 2.java 680ms 10ms 526.8MB 463ms 403ms openjdk/zgc 21

nsieve

Input: 12

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1.java 386ms 4.5ms 115.4MB 440ms 17ms openjdk 21
java 1.java 400ms 5.1ms 118.2MB 440ms 23ms openjdk 23
codon 1-m.py 444ms 8.1ms 67.3MB 743ms 7ms codon 0.18.2
java 1.java 563ms 9.0ms 112.7MB 473ms 163ms openjdk/zgc 21
java 1-m.java 597ms 12ms 270.7MB 853ms 83ms graal/jvm 17.0.8
java 2.java 779ms 4.4ms 60.6MB 827ms 20ms openjdk 23
java 2.java 780ms 4.0ms 57.3MB 843ms 20ms openjdk 21
java 2.java 835ms 8.1ms 53.1MB 767ms 137ms openjdk/zgc 21
java 2-m.java 1339ms 38ms 269.6MB 2393ms 100ms graal/jvm 17.0.8
codon 2.py 1520ms 13ms 100.8MB 1830ms 17ms codon 0.18.2

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
codon 1-m.py 128ms 1.7ms 18.5MB 437ms 0ms codon 0.18.2
java 1.java 152ms 0.7ms 67.9MB 200ms 17ms openjdk 23
java 1.java 158ms 5.5ms 64.9MB 210ms 17ms openjdk 21
java 1-m.java 199ms 1.5ms 124.8MB 287ms 37ms graal/jvm 17.0.8
java 2.java 256ms 1.2ms 49.8MB 317ms 20ms openjdk 21
java 2.java 260ms 1.5ms 50.4MB 313ms 17ms openjdk 23
java 1.java 281ms 0.9ms 61.2MB 200ms 143ms openjdk/zgc 21
java 2.java 366ms 2.7ms 47.4MB 307ms 137ms openjdk/zgc 21
codon 2-m.py 392ms 4.2ms 27.4MB 703ms 7ms codon 0.18.2
java 2-m.java 472ms 6.2ms 144.5MB 843ms 60ms graal/jvm 17.0.8