Codon VS Java benchmarks

Current benchmark data was generated on Mon Mar 31 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 61ms 2.2ms 52.6MB 64ms 20ms graal/jvm 17.0.8
java 1.java 68ms 7.8ms 43.6MB 76ms 12ms openjdk 21
java 1.java 72ms 4.4ms 44.7MB 78ms 16ms openjdk 23
java 1.java 195ms 7.0ms 43.0MB 86ms 138ms openjdk/zgc 21

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1.java 438ms 4.2ms 48.0MB 470ms 17ms openjdk 23
java 1.java 438ms 4.3ms 45.2MB 473ms 20ms openjdk 21
java 1.java 447ms 2.7ms 81.5MB 477ms 30ms graal/jvm 17.0.8
java 1.java 570ms 1.1ms 45.0MB 487ms 143ms openjdk/zgc 21
java 2.java 1224ms 17ms 555.8MB 1360ms 67ms openjdk 21
java 2.java 1249ms 7.4ms 776.3MB 1370ms 97ms openjdk 23
codon 1.py 1453ms 222ms 9.0MB 1763ms 0ms codon 0.18.2
java 2.java 3395ms 149ms 2652.0MB 1667ms 1940ms openjdk/zgc 21

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1.java 116ms 3.6ms 81.6MB 143ms 30ms graal/jvm 17.0.8
java 1.java 117ms 0.6ms 44.9MB 153ms 20ms openjdk 21
java 1.java 120ms 2.2ms 47.9MB 153ms 20ms openjdk 23
codon 1-m.py 174ms 3.5ms 8.9MB 483ms 0ms codon 0.18.2
java 1.java 243ms 3.2ms 44.8MB 160ms 140ms openjdk/zgc 21
java 2-m.java 294ms 6.4ms 364.7MB 423ms 57ms openjdk 21
java 2-m.java 308ms 8.6ms 401.9MB 447ms 60ms openjdk 23
java 2.java 697ms 16ms 537.4MB 467ms 410ms openjdk/zgc 21

nsieve

Input: 12

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1.java 383ms 7.9ms 114.9MB 430ms 27ms openjdk 21
java 1.java 389ms 4.7ms 118.3MB 433ms 23ms openjdk 23
codon 1-m.py 419ms 4.2ms 47.6MB 723ms 0ms codon 0.18.2
java 1.java 557ms 11ms 112.8MB 463ms 167ms openjdk/zgc 21
java 1-m.java 598ms 27ms 233.2MB 870ms 70ms graal/jvm 17.0.8
java 2.java 773ms 7.9ms 57.6MB 830ms 17ms openjdk 21
java 2.java 778ms 4.5ms 60.5MB 830ms 20ms openjdk 23
java 2.java 853ms 16ms 53.4MB 783ms 143ms openjdk/zgc 21
java 2-m.java 1372ms 31ms 247.6MB 2460ms 100ms graal/jvm 17.0.8
codon 2.py 1525ms 10ms 100.8MB 1833ms 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 127ms 2.6ms 18.5MB 433ms 0ms codon 0.18.2
java 1.java 153ms 2.7ms 68.5MB 197ms 23ms openjdk 23
java 1.java 154ms 2.2ms 64.7MB 207ms 17ms openjdk 21
java 1-m.java 206ms 11ms 137.5MB 283ms 50ms graal/jvm 17.0.8
java 2.java 254ms 2.5ms 49.8MB 317ms 17ms openjdk 21
java 2.java 263ms 5.2ms 50.7MB 313ms 17ms openjdk 23
java 1.java 279ms 5.2ms 61.5MB 200ms 143ms openjdk/zgc 21
java 2.java 368ms 2.4ms 47.7MB 303ms 143ms openjdk/zgc 21
codon 2-m.py 394ms 3.1ms 27.1MB 703ms 3ms codon 0.18.2
java 2-m.java 474ms 5.0ms 145.4MB 840ms 60ms graal/jvm 17.0.8