Codon VS Java benchmarks

Current benchmark data was generated on Mon May 19 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.7ms 8.8MB 20ms 0ms codon 0.18.2
java 1.java 65ms 2.3ms 53.1MB 68ms 20ms graal/jvm 17.0.8
java 1.java 70ms 6.5ms 44.7MB 80ms 14ms openjdk 23
java 1.java 70ms 4.4ms 43.9MB 76ms 18ms openjdk 21
java 1.java 194ms 7.5ms 43.0MB 86ms 142ms openjdk/zgc 21

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1.java 445ms 0.4ms 45.0MB 490ms 13ms openjdk 21
java 1.java 446ms 3.8ms 48.4MB 477ms 20ms openjdk 23
java 1.java 447ms 2.3ms 82.2MB 477ms 27ms graal/jvm 17.0.8
java 1.java 577ms 2.1ms 44.8MB 497ms 140ms openjdk/zgc 21
java 2.java 1252ms 5.6ms 639.9MB 1390ms 87ms openjdk 21
java 2.java 1277ms 19ms 794.0MB 1390ms 113ms openjdk 23
codon 1.py 1323ms 14ms 8.9MB 1630ms 0ms codon 0.18.2
java 2.java 3274ms 53ms 2445.6MB 1653ms 1830ms openjdk/zgc 21

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1.java 120ms 4.0ms 48.0MB 153ms 20ms openjdk 23
java 1.java 122ms 2.1ms 44.9MB 167ms 13ms openjdk 21
java 1-m.java 123ms 4.2ms 81.5MB 157ms 33ms graal/jvm 17.0.8
codon 1-m.py 177ms 3.9ms 8.8MB 487ms 0ms codon 0.18.2
java 1.java 249ms 3.8ms 44.9MB 157ms 147ms openjdk/zgc 21
java 2-m.java 302ms 22ms 344.8MB 437ms 53ms openjdk 21
java 2-m.java 313ms 7.2ms 400.0MB 443ms 70ms openjdk 23
java 2.java 684ms 17ms 532.7MB 467ms 407ms openjdk/zgc 21

nsieve

Input: 12

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1.java 410ms 3.5ms 115.8MB 463ms 27ms openjdk 21
java 1.java 424ms 3.9ms 118.5MB 467ms 27ms openjdk 23
codon 1-m.py 455ms 9.2ms 47.7MB 757ms 0ms codon 0.18.2
java 1.java 587ms 6.0ms 112.8MB 493ms 163ms openjdk/zgc 21
java 1-m.java 644ms 25ms 236.7MB 933ms 77ms graal/jvm 17.0.8
java 2.java 782ms 3.1ms 56.9MB 837ms 17ms openjdk 21
java 2.java 786ms 9.6ms 60.5MB 840ms 20ms openjdk 23
java 2.java 847ms 3.9ms 53.2MB 777ms 143ms openjdk/zgc 21
java 2-m.java 1339ms 8.3ms 234.5MB 2410ms 100ms graal/jvm 17.0.8
codon 2.py 1561ms 6.3ms 100.8MB 1870ms 23ms codon 0.18.2

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
codon 1-m.py 126ms 3.4ms 18.4MB 433ms 0ms codon 0.18.2
java 1.java 155ms 2.3ms 68.1MB 200ms 23ms openjdk 23
java 1.java 158ms 3.5ms 64.7MB 210ms 20ms openjdk 21
java 1-m.java 210ms 6.9ms 124.8MB 297ms 47ms graal/jvm 17.0.8
java 2.java 262ms 3.1ms 50.5MB 310ms 23ms openjdk 23
java 2.java 263ms 1.2ms 50.0MB 327ms 20ms openjdk 21
java 1.java 286ms 4.1ms 61.5MB 203ms 150ms openjdk/zgc 21
java 2.java 370ms 2.8ms 47.7MB 303ms 147ms openjdk/zgc 21
codon 2-m.py 398ms 2.8ms 27.2MB 707ms 10ms codon 0.18.2
java 2-m.java 470ms 6.2ms 199.2MB 830ms 63ms graal/jvm 17.0.8