Codon VS Java benchmarks

Current benchmark data was generated on Mon Jun 23 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 12ms 0.9ms 8.8MB 20ms 0ms codon 0.18.2
java 1.java 64ms 2.4ms 52.4MB 66ms 18ms graal/jvm 17.0.8
java 1.java 72ms 4.4ms 44.7MB 78ms 16ms openjdk 23
java 1.java 73ms 4.9ms 43.8MB 76ms 20ms openjdk 21
java 1.java 192ms 4.4ms 42.8MB 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 441ms 5.0ms 45.2MB 473ms 17ms openjdk 21
java 1.java 449ms 1.1ms 47.9MB 480ms 20ms openjdk 23
java 1.java 450ms 4.6ms 81.4MB 480ms 23ms graal/jvm 17.0.8
java 1.java 573ms 3.6ms 44.8MB 497ms 140ms openjdk/zgc 21
java 2.java 1253ms 11ms 668.0MB 1373ms 93ms openjdk 21
java 2.java 1255ms 4.2ms 766.6MB 1373ms 100ms openjdk 23
codon 1.py 1453ms 224ms 8.8MB 1763ms 0ms codon 0.18.2
java 2.java 3285ms 47ms 2400.8MB 1683ms 1837ms openjdk/zgc 21

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1.java 118ms 2.7ms 81.6MB 150ms 27ms graal/jvm 17.0.8
java 1.java 124ms 1.2ms 48.5MB 157ms 23ms openjdk 23
java 1.java 135ms 27ms 45.4MB 153ms 13ms openjdk 21
codon 1-m.py 175ms 4.0ms 8.8MB 483ms 0ms codon 0.18.2
java 1.java 249ms 2.6ms 44.8MB 167ms 143ms openjdk/zgc 21
java 2-m.java 295ms 10ms 352.2MB 433ms 50ms openjdk 21
java 2-m.java 313ms 6.2ms 395.9MB 450ms 63ms openjdk 23
java 2.java 705ms 8.5ms 535.8MB 483ms 417ms openjdk/zgc 21

nsieve

Input: 12

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1.java 414ms 0.9ms 118.0MB 460ms 23ms openjdk 23
java 1.java 423ms 11ms 115.3MB 473ms 20ms openjdk 21
codon 1-m.py 502ms 15ms 47.7MB 803ms 3ms codon 0.18.2
java 1.java 597ms 9.6ms 112.7MB 500ms 163ms openjdk/zgc 21
java 1-m.java 607ms 8.4ms 214.2MB 883ms 67ms graal/jvm 17.0.8
java 2.java 783ms 3.4ms 57.1MB 847ms 17ms openjdk 21
java 2.java 790ms 3.7ms 60.7MB 843ms 17ms openjdk 23
java 2.java 854ms 2.8ms 53.3MB 787ms 147ms openjdk/zgc 21
java 2-m.java 1346ms 23ms 259.9MB 2400ms 117ms graal/jvm 17.0.8
codon 2.py 1569ms 7.2ms 101.0MB 1877ms 20ms 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 2.1ms 18.7MB 437ms 0ms codon 0.18.2
java 1.java 153ms 0.8ms 68.2MB 200ms 20ms openjdk 23
java 1.java 158ms 2.0ms 64.8MB 213ms 13ms openjdk 21
java 1-m.java 211ms 22ms 124.9MB 297ms 47ms graal/jvm 17.0.8
java 2.java 265ms 7.5ms 50.3MB 313ms 20ms openjdk 23
java 2.java 271ms 12ms 50.0MB 337ms 20ms openjdk 21
java 1.java 291ms 0.1ms 61.5MB 213ms 150ms openjdk/zgc 21
java 2.java 377ms 6.4ms 47.6MB 310ms 147ms openjdk/zgc 21
codon 2-m.py 398ms 6.2ms 27.1MB 710ms 7ms codon 0.18.2
java 2-m.java 475ms 9.9ms 145.5MB 853ms 57ms graal/jvm 17.0.8