Odin VS Java benchmarks

Current benchmark data was generated on Mon Feb 06 2023, full log can be found HERE

CONTRIBUTIONS are WELCOME!

[x86_64][2 cores] Intel(R) Xeon(R) Platinum 8272CL CPU @ 2.60GHz (Model 85)

* -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 741ms 67ms 604.5MB 693ms 140ms openjdk 20
java 2.java 785ms 70ms 601.6MB 723ms 153ms openjdk 19
java 2.java 929ms 77ms 665.9MB 940ms 233ms graal/jvm 17.0.6
java 2.java 1459ms 59ms 1085.7MB 960ms 723ms openjdk/zgc 19
odin 1.odin 4635ms 17ms 49.5MB 4597ms 17ms odin 2023

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 2.java 187ms 22ms 108.8MB 167ms 37ms openjdk 20
java 2.java 192ms 10ms 111.6MB 187ms 33ms openjdk 19
java 2.java 204ms 15ms 162.8MB 223ms 60ms graal/jvm 17.0.6
java 2.java 346ms 6.2ms 239.6MB 207ms 167ms openjdk/zgc 19
odin 1.odin 398ms 6.4ms 7.5MB 383ms 0ms odin 2023

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
odin 1.odin 1.8ms 0.7ms 1.3MB 0ms 0ms odin 2023
java 1.java 80ms 2.1ms 48.1MB 72ms 14ms graal/jvm 17.0.6
java 1.java 87ms 9.2ms 39.3MB 78ms 16ms openjdk 20
java 1.java 93ms 4.7ms 42.4MB 76ms 24ms openjdk 19
java 1.java 150ms 9.1ms 41.0MB 86ms 64ms openjdk/zgc 19

knucleotide

Input: 2500000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
odin 1-m.odin 932ms 4.7ms 46.5MB 1617ms 50ms odin 2023
java 3-m.java 1420ms 16ms 113.4MB 2567ms 40ms openjdk 20
java 3-m.java 1510ms 5.7ms 115.0MB 2733ms 40ms openjdk 19
java 3-m.java 1680ms 28ms 165.9MB 3040ms 73ms graal/jvm 17.0.6
java 3-m.java 2020ms 14ms 173.9MB 3490ms 163ms openjdk/zgc 19

Input: 250000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
odin 1.odin 219ms 1.6ms 32.7MB 263ms 40ms odin 2023
java 3-m.java 427ms 3.1ms 88.2MB 693ms 47ms openjdk 20
java 3-m.java 515ms 8.3ms 94.0MB 723ms 117ms openjdk/zgc 19
java 3-m.java 517ms 69ms 94.1MB 863ms 37ms openjdk 19
java 3-m.java 534ms 30ms 136.2MB 877ms 63ms graal/jvm 17.0.6

lru

Input: 1000 1000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
odin 1.odin 268ms 1.7ms 1.3MB 260ms 0ms odin 2023

Input: 1000 3000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
odin 1.odin 809ms 3.6ms 1.2MB 800ms 0ms odin 2023

Input: 100 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
odin 1.odin 113ms 1.7ms 1.3MB 100ms 0ms odin 2023

mandelbrot

Input: 5000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
odin 1.odin 1375ms 0.9ms 4.5MB 1363ms 0ms odin 2023
java 1b.java 1513ms 7.1ms 50.0MB 1583ms 17ms openjdk 19
java 1b.java 1520ms 20ms 47.0MB 1607ms 17ms openjdk 20
java 1b.java 1598ms 29ms 47.7MB 1643ms 73ms openjdk/zgc 19
java 1b.java 1602ms 55ms 104.0MB 1763ms 53ms graal/jvm 17.0.6
java 1a.java 1817ms 5.1ms 47.7MB 1897ms 10ms openjdk 20
java 1a.java 1820ms 9.5ms 48.4MB 1893ms 20ms openjdk 19
java 1a.java 1877ms 9.5ms 99.4MB 1970ms 43ms graal/jvm 17.0.6
java 1a.java 1883ms 4.3ms 47.6MB 1887ms 67ms openjdk/zgc 19
java 1.java 2052ms 28ms 129.3MB 2147ms 43ms graal/jvm 17.0.6
java 1.java 2104ms 131ms 195.1MB 2133ms 60ms openjdk 19
java 1.java 2160ms 16ms 203.4MB 2190ms 70ms openjdk 20
java 1.java 2595ms 8.5ms 562.4MB 2273ms 440ms openjdk/zgc 19
java 2.java timeout 0.0ms 546.9MB 5143ms 160ms openjdk 19
java 2.java timeout 0.0ms 590.5MB 5113ms 180ms openjdk 20
java 2.java timeout 0.0ms 1764.1MB 4527ms 920ms openjdk/zgc 19

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
odin 1.odin 58ms 1.5ms 1.2MB 50ms 0ms odin 2023
java 1b.java 222ms 7.8ms 47.8MB 287ms 23ms openjdk 19
java 1a.java 240ms 7.6ms 45.1MB 307ms 23ms openjdk 20
java 1b.java 241ms 16ms 43.1MB 307ms 20ms openjdk 20
java 1a.java 245ms 10ms 46.8MB 290ms 27ms openjdk 19
java 1.java 248ms 5.0ms 97.4MB 290ms 30ms openjdk 19
java 1.java 256ms 6.0ms 96.8MB 297ms 33ms openjdk 20
java 1a.java 263ms 5.3ms 95.6MB 340ms 27ms graal/jvm 17.0.6
java 1.java 267ms 1.7ms 102.6MB 333ms 43ms graal/jvm 17.0.6
java 1a.java 289ms 11ms 44.7MB 280ms 80ms openjdk/zgc 19
java 1b.java 294ms 17ms 46.3MB 297ms 80ms openjdk/zgc 19
java 1b-m.java 316ms 23ms 101.9MB 467ms 37ms graal/jvm 17.0.6
java 1.java 329ms 7.3ms 112.4MB 297ms 93ms openjdk/zgc 19
java 2.java 830ms 68ms 584.2MB 953ms 180ms openjdk 20
java 2.java 850ms 53ms 592.4MB 997ms 177ms openjdk 19
java 2.java 1545ms 61ms 1103.2MB 1083ms 747ms openjdk/zgc 19

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
odin 1-i.odin 559ms 1.2ms 1.3MB 550ms 0ms odin 2023
java 1.java 599ms 11ms 89.9MB 623ms 27ms graal/jvm 17.0.6
java 1.java 651ms 5.4ms 40.6MB 660ms 10ms openjdk 20
java 1.java 661ms 11ms 42.0MB 657ms 23ms openjdk 19
java 1.java 707ms 18ms 41.7MB 650ms 70ms openjdk/zgc 19
java 2.java 2110ms 21ms 516.4MB 2083ms 167ms openjdk 20
java 2.java 2163ms 14ms 550.9MB 2123ms 173ms openjdk 19
odin 1.odin 2350ms 2.1ms 1.3MB 2337ms 0ms odin 2023
java 2.java 2913ms 129ms 1417.8MB 2140ms 963ms openjdk/zgc 19

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
odin 1-i.odin 58ms 0.6ms 1.3MB 50ms 0ms odin 2023
java 1.java 160ms 6.0ms 40.5MB 167ms 23ms openjdk 20
java 1.java 163ms 3.2ms 89.9MB 190ms 30ms graal/jvm 17.0.6
java 1.java 178ms 5.1ms 42.0MB 170ms 23ms openjdk 19
java 1.java 217ms 7.7ms 43.8MB 173ms 63ms openjdk/zgc 19
odin 1.odin 237ms 0.2ms 1.2MB 230ms 0ms odin 2023
java 2.java 460ms 1.3ms 347.4MB 490ms 107ms openjdk 20
java 2.java 488ms 15ms 362.6MB 517ms 107ms openjdk 19
java 2.java 793ms 2.4ms 487.0MB 563ms 377ms openjdk/zgc 19

nsieve

Input: 12

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 2.java 1038ms 8.7ms 51.3MB 1070ms 17ms openjdk 20
odin 2.odin 1058ms 1.6ms 6.4MB 1050ms 0ms odin 2023
java 2.java 1088ms 7.3ms 52.3MB 1120ms 13ms openjdk 19
odin 1.odin 1118ms 56ms 40.5MB 1090ms 10ms odin 2023
java 2.java 1148ms 3.8ms 50.8MB 1113ms 70ms openjdk/zgc 19
java 1.java 1206ms 75ms 84.4MB 1220ms 27ms openjdk 20
java 1.java 1465ms 36ms 112.2MB 1410ms 100ms openjdk/zgc 19
java 1.java 1523ms 26ms 85.7MB 1543ms 37ms openjdk 19
java 1.java 1999ms 39ms 241.2MB 2777ms 97ms graal/jvm 17.0.6
java 2-m.java 2014ms 153ms 290.9MB 3543ms 103ms graal/jvm 17.0.6

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
odin 1.odin 132ms 0.5ms 11.3MB 117ms 3ms odin 2023
java 1.java 252ms 6.8ms 58.4MB 257ms 27ms openjdk 20
odin 2.odin 253ms 0.2ms 2.7MB 240ms 0ms odin 2023
java 1.java 278ms 6.4ms 62.3MB 297ms 20ms openjdk 19
java 1.java 317ms 7.7ms 59.1MB 280ms 77ms openjdk/zgc 19
java 2.java 327ms 6.3ms 45.0MB 343ms 27ms openjdk 20
java 2.java 352ms 5.7ms 48.4MB 370ms 27ms openjdk 19
java 1.java 378ms 15ms 153.4MB 497ms 57ms graal/jvm 17.0.6
java 2.java 397ms 1.2ms 44.5MB 360ms 70ms openjdk/zgc 19
java 2-m.java 686ms 8.1ms 156.4MB 1170ms 77ms graal/jvm 17.0.6

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
odin 1.odin 3552ms 1.5ms 2.8MB 3540ms 0ms odin 2023
java 2-m.java 4353ms 35ms 91.0MB 8370ms 40ms graal/jvm 17.0.6
java 2.java timeout 0.0ms 44.0MB 9700ms 27ms openjdk 19
java 2.java timeout 0.0ms 40.6MB 9707ms 23ms openjdk 20
java 2.java timeout 0.0ms 43.9MB 9613ms 57ms openjdk/zgc 19

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
odin 1.odin 891ms 1.2ms 2.1MB 877ms 0ms odin 2023
java 2-m.java 1256ms 17ms 93.9MB 2293ms 27ms graal/jvm 17.0.6
java 2-m.java 1690ms 21ms 44.1MB 3167ms 20ms openjdk 19
java 2-m.java 1719ms 55ms 42.2MB 3123ms 70ms openjdk/zgc 19
java 2-m.java 1964ms 48ms 40.9MB 3727ms 17ms openjdk 20

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
odin 1.odin 225ms 0.1ms 1.9MB 213ms 0ms odin 2023
java 2-m.java 443ms 28ms 90.8MB 740ms 30ms graal/jvm 17.0.6
java 2-m.java 583ms 44ms 42.6MB 1013ms 17ms openjdk 19
java 2-m.java 603ms 35ms 40.7MB 1057ms 17ms openjdk 20
java 2-m.java 636ms 27ms 42.1MB 1000ms 70ms openjdk/zgc 19