Odin VS Java benchmarks

Current benchmark data was generated on Thu Feb 01 2024, 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.)

binarytrees

Input: 18

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 2.java 450ms 3.2ms 574.3MB 543ms 87ms openjdk 21
java 2-m.java 462ms 4.6ms 646.8MB 650ms 110ms graal/jvm 17.0.8
java 2.java 462ms 4.8ms 588.2MB 563ms 97ms openjdk 23
java 2.java 1178ms 0.9ms 1055.6MB 607ms 733ms openjdk/zgc 21
odin 1.odin 3283ms 20ms 49.8MB 3250ms 17ms odin 2024

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 2.java 123ms 1.1ms 166.9MB 147ms 37ms openjdk 21
java 2-m.java 125ms 1.5ms 163.2MB 157ms 33ms openjdk 23
java 2-m.java 168ms 15ms 230.2MB 220ms 70ms graal/jvm 17.0.8
odin 1.odin 298ms 6.1ms 7.6MB 280ms 0ms odin 2024
java 2.java 314ms 1.3ms 241.4MB 153ms 213ms openjdk/zgc 21

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
odin 1.odin 1.1ms 0.1ms 1.9MB 0ms 0ms odin 2024
java 1.java 66ms 3.1ms 54.7MB 64ms 24ms graal/jvm 17.0.8
java 1.java 73ms 1.9ms 43.8MB 74ms 14ms openjdk 21
java 1.java 73ms 2.7ms 43.9MB 80ms 14ms openjdk 23
java 1.java 189ms 6.4ms 42.6MB 84ms 132ms openjdk/zgc 21

knucleotide

Input: 2500000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
odin 1-m.odin 638ms 3.8ms 49.7MB 2017ms 60ms odin 2024
java 3-m.java 976ms 15ms 142.6MB 3320ms 40ms openjdk 23
java 3-m.java 1035ms 59ms 129.1MB 3537ms 67ms openjdk 21
java 3-m.java 1111ms 17ms 183.2MB 3750ms 77ms graal/jvm 17.0.8
java 3-m.java 1429ms 32ms 178.3MB 4530ms 183ms openjdk/zgc 21

Input: 250000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
odin 1-m.odin 138ms 3.4ms 33.3MB 260ms 70ms odin 2024
java 3-m.java 314ms 22ms 88.4MB 907ms 47ms openjdk 23
java 3-m.java 329ms 5.5ms 100.1MB 987ms 50ms openjdk 21
java 3-m.java 337ms 30ms 145.3MB 897ms 57ms graal/jvm 17.0.8
java 3-m.java 428ms 11ms 98.6MB 890ms 150ms openjdk/zgc 21

lru

Input: 1000 1000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
odin 1.odin 247ms 19ms 1.8MB 237ms 0ms odin 2024

Input: 1000 3000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
odin 1.odin 701ms 1.0ms 1.8MB 687ms 0ms odin 2024

Input: 100 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
odin 1.odin 111ms 1.3ms 1.6MB 100ms 0ms odin 2024

mandelbrot

Input: 5000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1b.java 1159ms 6.4ms 54.5MB 1263ms 30ms openjdk 21
java 1b.java 1160ms 10ms 54.8MB 1273ms 23ms openjdk 23
java 1b.java 1196ms 32ms 107.7MB 1377ms 40ms graal/jvm 17.0.8
java 1.java 1255ms 1.2ms 131.4MB 1353ms 53ms graal/jvm 17.0.8
java 1b.java 1269ms 25ms 52.8MB 1257ms 137ms openjdk/zgc 21
odin 1.odin 1571ms 1.6ms 4.6MB 1560ms 0ms odin 2024
java 1a.java 1650ms 5.1ms 54.9MB 1750ms 20ms openjdk 21
java 1a.java 1665ms 3.7ms 54.7MB 1760ms 17ms openjdk 23
java 1a.java 1686ms 18ms 103.8MB 1813ms 33ms graal/jvm 17.0.8
java 1.java 1695ms 6.4ms 202.3MB 1747ms 60ms openjdk 23
java 1.java 1697ms 4.4ms 258.0MB 1760ms 47ms openjdk 21
java 1a.java 1768ms 4.0ms 51.7MB 1740ms 143ms openjdk/zgc 21
java 1.java 2356ms 6.1ms 864.1MB 1797ms 667ms openjdk/zgc 21
java 2.java timeout 0.0ms 662.0MB 5350ms 123ms openjdk 21
java 2.java timeout 0.0ms 718.8MB 5263ms 137ms openjdk 23
java 2.java timeout 0.0ms 3397.0MB 3463ms 1890ms openjdk/zgc 21

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
odin 1.odin 68ms 0.5ms 1.8MB 60ms 0ms odin 2024
java 1b-m.java 177ms 1.0ms 49.4MB 273ms 17ms openjdk 21
java 1b-m.java 182ms 8.4ms 49.7MB 280ms 23ms openjdk 23
java 1a-m.java 188ms 3.7ms 50.9MB 287ms 23ms openjdk 21
java 1-m.java 190ms 3.8ms 81.4MB 267ms 27ms openjdk 21
java 1a-m.java 194ms 8.4ms 49.9MB 270ms 30ms openjdk 23
java 1-m.java 195ms 5.2ms 111.3MB 287ms 50ms graal/jvm 17.0.8
java 1-m.java 198ms 3.6ms 77.5MB 280ms 27ms openjdk 23
java 1a-m.java 220ms 15ms 103.9MB 330ms 40ms graal/jvm 17.0.8
java 1b-m.java 240ms 24ms 105.9MB 393ms 50ms graal/jvm 17.0.8
java 1b.java 309ms 29ms 47.6MB 307ms 137ms openjdk/zgc 21
java 1a.java 310ms 4.8ms 51.0MB 290ms 137ms openjdk/zgc 21
java 1.java 337ms 2.2ms 114.3MB 263ms 170ms openjdk/zgc 21
java 2-m.java 543ms 4.9ms 575.4MB 813ms 90ms openjdk 23
java 2-m.java 552ms 12ms 661.2MB 837ms 87ms openjdk 21
java 2.java 1585ms 4.1ms 1394.5MB 830ms 1050ms openjdk/zgc 21

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
odin 1-i.odin 412ms 1.8ms 1.8MB 400ms 0ms odin 2024
java 1.java 443ms 1.2ms 47.6MB 487ms 13ms openjdk 23
java 1.java 444ms 1.9ms 45.4MB 477ms 20ms openjdk 21
java 1.java 455ms 6.6ms 86.8MB 483ms 30ms graal/jvm 17.0.8
java 1.java 559ms 4.6ms 46.7MB 480ms 133ms openjdk/zgc 21
java 2.java 1234ms 5.9ms 597.7MB 1363ms 77ms openjdk 23
java 2.java 1238ms 9.8ms 647.8MB 1373ms 80ms openjdk 21
java 2.java 3177ms 56ms 2367.4MB 1670ms 1723ms openjdk/zgc 21
odin 1.odin 4417ms 16ms 1.6MB 4413ms 0ms odin 2024

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
odin 1-i.odin 44ms 0.8ms 1.6MB 37ms 0ms odin 2024
java 1.java 119ms 1.1ms 45.5MB 147ms 23ms openjdk 21
java 1.java 120ms 0.2ms 47.8MB 153ms 20ms openjdk 23
java 1.java 126ms 5.3ms 87.5MB 157ms 27ms graal/jvm 17.0.8
java 1.java 243ms 2.9ms 46.7MB 163ms 140ms openjdk/zgc 21
java 2-m.java 295ms 2.6ms 352.8MB 433ms 50ms openjdk 23
java 2-m.java 298ms 4.2ms 362.9MB 443ms 50ms openjdk 21
odin 1.odin 442ms 0.7ms 1.6MB 430ms 0ms odin 2024
java 2.java 681ms 8.7ms 528.1MB 440ms 427ms openjdk/zgc 21

nsieve

Input: 12

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
odin 1.odin 291ms 4.7ms 40.6MB 270ms 3ms odin 2024
java 1.java 397ms 1.3ms 117.2MB 443ms 20ms openjdk 23
java 1.java 403ms 8.1ms 114.9MB 447ms 30ms openjdk 21
java 1.java 581ms 2.7ms 114.6MB 473ms 177ms openjdk/zgc 21
java 1-m.java 638ms 11ms 234.0MB 917ms 77ms graal/jvm 17.0.8
java 2.java 779ms 1.6ms 59.3MB 827ms 23ms openjdk 23
java 2.java 781ms 0.5ms 57.3MB 837ms 23ms openjdk 21
odin 2.odin 811ms 3.6ms 6.5MB 797ms 3ms odin 2024
java 2.java 849ms 14ms 52.9MB 773ms 150ms openjdk/zgc 21
java 2-m.java 1353ms 17ms 264.4MB 2427ms 100ms graal/jvm 17.0.8

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
odin 1.odin 56ms 0.9ms 11.3MB 43ms 0ms odin 2024
java 1.java 158ms 3.3ms 67.3MB 207ms 20ms openjdk 23
java 1.java 162ms 8.7ms 64.7MB 203ms 27ms openjdk 21
odin 2.odin 200ms 0.3ms 2.8MB 190ms 0ms odin 2024
java 1-m.java 214ms 20ms 137.5MB 287ms 60ms graal/jvm 17.0.8
java 2.java 257ms 0.4ms 49.6MB 293ms 30ms openjdk 23
java 2.java 257ms 3.8ms 49.8MB 313ms 23ms openjdk 21
java 1.java 284ms 4.8ms 63.3MB 210ms 143ms openjdk/zgc 21
java 2.java 365ms 2.0ms 49.3MB 307ms 137ms openjdk/zgc 21
java 2-m.java 582ms 94ms 203.7MB 1050ms 63ms graal/jvm 17.0.8

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 2-m.java 1956ms 9.0ms 48.0MB 7453ms 37ms openjdk 23
java 2-m.java 1957ms 12ms 47.8MB 7463ms 27ms openjdk 21
java 2-m.java 2081ms 13ms 45.6MB 7440ms 140ms openjdk/zgc 21
java 2-m.java 2462ms 20ms 94.8MB 8777ms 47ms graal/jvm 17.0.8
odin 1.odin 3783ms 11ms 2.9MB 3773ms 0ms odin 2024

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 2-m.java 583ms 3.4ms 47.7MB 2050ms 20ms openjdk 21
java 2-m.java 586ms 3.4ms 47.9MB 2070ms 20ms openjdk 23
java 2-m.java 713ms 3.2ms 45.6MB 2100ms 133ms openjdk/zgc 21
java 2-m.java 744ms 11ms 100.2MB 2513ms 37ms graal/jvm 17.0.8
odin 1.odin 927ms 7.4ms 2.3MB 917ms 0ms odin 2024

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 2-m.java 233ms 0.9ms 47.6MB 667ms 20ms openjdk 21
odin 1.odin 235ms 2.8ms 1.9MB 227ms 0ms odin 2024
java 2-m.java 243ms 5.5ms 47.9MB 727ms 23ms openjdk 23
java 2-m.java 277ms 8.5ms 98.5MB 783ms 43ms graal/jvm 17.0.8
java 2-m.java 372ms 13ms 45.5MB 740ms 133ms openjdk/zgc 21