Java VS Odin benchmarks

Current benchmark data was generated on Mon Oct 03 2022, full log can be found HERE

CONTRIBUTIONS are WELCOME!

[x86_64][2 cores] Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz (Model 106)

* -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 664ms 1.5ms 414.2MB 697ms 73ms openjdk 20
java 2.java 671ms 20ms 409.7MB 673ms 93ms openjdk 19
java 2.java 692ms 13ms 682.2MB 790ms 123ms graal/jvm 17.0.4
java 2.java 1302ms 14ms 1093.8MB 883ms 643ms openjdk/zgc 19

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 2.java 167ms 8.9ms 111.2MB 177ms 20ms openjdk 19
java 2.java 174ms 9.7ms 109.6MB 177ms 17ms openjdk 20
java 2.java 178ms 13ms 164.0MB 227ms 37ms graal/jvm 17.0.4
java 2.java 296ms 1.0ms 243.3MB 183ms 150ms openjdk/zgc 19

edigits

Input: 250001

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1-m.java 729ms 22ms 284.6MB 1260ms 83ms graal/jvm 17.0.4
java 1-m.java 826ms 72ms 201.4MB 1450ms 77ms openjdk 19
java 1-m.java 861ms 127ms 211.6MB 1540ms 53ms openjdk 20
java 1-m.java 1027ms 58ms 480.3MB 1547ms 323ms openjdk/zgc 19

Input: 100000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1-m.java 407ms 5.7ms 186.4MB 680ms 40ms graal/jvm 17.0.4
java 1-m.java 441ms 28ms 116.2MB 733ms 37ms openjdk 19
java 1-m.java 455ms 35ms 117.1MB 757ms 43ms openjdk 20
java 1-m.java 539ms 17ms 209.0MB 790ms 133ms openjdk/zgc 19

fannkuch-redux

Input: 11

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1-m.java 1645ms 15ms 103.7MB 3117ms 37ms graal/jvm 17.0.4
java 1-m.java 1708ms 31ms 42.4MB 3183ms 53ms openjdk/zgc 19
java 1-m.java 1717ms 10ms 42.4MB 3273ms 20ms openjdk 19
java 1-m.java 1719ms 55ms 44.3MB 3310ms 7ms openjdk 20

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1-m.java 266ms 21ms 92.6MB 427ms 23ms graal/jvm 17.0.4
java 1-m.java 269ms 3.1ms 43.3MB 430ms 10ms openjdk 20
java 1-m.java 277ms 1.4ms 42.0MB 450ms 10ms openjdk 19
java 1-m.java 310ms 4.0ms 42.1MB 430ms 57ms openjdk/zgc 19

fasta

Input: 2500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 4.java 510ms 8.2ms 43.8MB 593ms 7ms openjdk 20
java 4.java 516ms 3.1ms 43.6MB 593ms 13ms openjdk 19
java 4.java 555ms 3.2ms 43.7MB 597ms 57ms openjdk/zgc 19
java 4-m.java 620ms 8.0ms 119.5MB 920ms 37ms graal/jvm 17.0.4

Input: 250000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 4.java 139ms 5.3ms 43.0MB 170ms 3ms openjdk 20
java 4.java 144ms 3.5ms 43.0MB 163ms 10ms openjdk 19
java 4.java 153ms 3.1ms 79.5MB 183ms 20ms graal/jvm 17.0.4
java 4.java 183ms 1.2ms 41.0MB 167ms 50ms openjdk/zgc 19

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
odin 1.odin 1.9ms 0.9ms 0.9MB 0ms 0ms odin 2022
java 1.java 71ms 3.3ms 61.0MB 72ms 8ms graal/jvm 17.0.4
java 1.java 76ms 2.2ms 40.3MB 78ms 8ms openjdk 19
java 1.java 82ms 3.1ms 42.4MB 76ms 10ms openjdk 20
java 1.java 121ms 3.2ms 41.8MB 78ms 54ms openjdk/zgc 19

knucleotide

Input: 2500000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 3-m.java 1455ms 25ms 114.8MB 2677ms 33ms openjdk 19
java 3-m.java 1467ms 16ms 115.3MB 2677ms 33ms openjdk 20
java 3-m.java 1533ms 35ms 193.8MB 2830ms 53ms graal/jvm 17.0.4
java 3-m.java 1929ms 3.6ms 174.1MB 3417ms 143ms openjdk/zgc 19

Input: 250000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 3-m.java 450ms 17ms 92.5MB 753ms 23ms openjdk 20
java 3-m.java 466ms 8.2ms 92.5MB 723ms 63ms openjdk/zgc 19
java 3-m.java 551ms 66ms 97.3MB 937ms 37ms openjdk 19
java 3-m.java 661ms 88ms 163.2MB 1160ms 57ms graal/jvm 17.0.4

mandelbrot

Input: 5000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1b.java 1407ms 10.0ms 50.6MB 1493ms 13ms openjdk 20
java 1b.java 1412ms 14ms 48.5MB 1507ms 13ms openjdk 19
java 1b.java 1483ms 21ms 129.2MB 1673ms 43ms graal/jvm 17.0.4
java 1b.java 1489ms 9.7ms 47.4MB 1573ms 50ms openjdk/zgc 19
java 1a.java 1529ms 3.4ms 48.7MB 1620ms 3ms openjdk 19
java 1a.java 1537ms 3.1ms 50.9MB 1617ms 17ms openjdk 20
java 1a.java 1578ms 17ms 117.6MB 1677ms 40ms graal/jvm 17.0.4
odin 1.odin 1583ms 4.0ms 4.5MB 1573ms 0ms odin 2022
java 1a.java 1590ms 31ms 47.6MB 1643ms 57ms openjdk/zgc 19
java 1.java 2018ms 9.9ms 129.1MB 2110ms 37ms graal/jvm 17.0.4
java 1.java 2110ms 10ms 187.0MB 2160ms 43ms openjdk 20
java 1.java 2126ms 8.2ms 185.3MB 2170ms 50ms openjdk 19
java 1.java 2506ms 5.1ms 578.2MB 2220ms 387ms openjdk/zgc 19
java 2.java timeout 0.0ms 0.0MB 0ms 0ms openjdk 19
java 2.java timeout 0.0ms 0.0MB 0ms 0ms openjdk 20
java 2.java timeout 0.0ms 0.0MB 0ms 0ms openjdk/zgc 19

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
odin 1.odin 68ms 0.6ms 0.8MB 60ms 0ms odin 2022
java 1b.java 204ms 5.6ms 45.9MB 267ms 20ms openjdk 19
java 1b.java 208ms 4.6ms 46.8MB 267ms 17ms openjdk 20
java 1a.java 213ms 9.1ms 49.3MB 290ms 7ms openjdk 19
java 1.java 216ms 8.3ms 96.1MB 273ms 20ms openjdk 19
java 1a.java 219ms 6.1ms 45.2MB 303ms 7ms openjdk 20
java 1a.java 224ms 6.9ms 104.6MB 300ms 20ms graal/jvm 17.0.4
java 1.java 233ms 28ms 98.2MB 300ms 27ms openjdk 20
java 1.java 250ms 6.4ms 115.4MB 317ms 40ms graal/jvm 17.0.4
java 1a.java 253ms 12ms 45.5MB 273ms 53ms openjdk/zgc 19
java 1b.java 258ms 11ms 46.0MB 297ms 47ms openjdk/zgc 19
java 1.java 279ms 13ms 113.4MB 260ms 87ms openjdk/zgc 19
java 1b-m.java 306ms 20ms 123.9MB 483ms 33ms graal/jvm 17.0.4
java 2.java 745ms 8.6ms 557.7MB 937ms 113ms openjdk 20
java 2.java 795ms 7.8ms 555.5MB 970ms 120ms openjdk 19
java 2.java 1373ms 35ms 1035.9MB 997ms 670ms openjdk/zgc 19

merkletrees

Input: 17

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1.java 492ms 4.2ms 293.5MB 533ms 53ms openjdk 20
java 1.java 508ms 8.0ms 365.6MB 530ms 73ms openjdk 19
java 1.java 567ms 12ms 444.7MB 707ms 100ms graal/jvm 17.0.4
java 1.java 927ms 2.0ms 711.7MB 667ms 403ms openjdk/zgc 19

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1.java 218ms 3.7ms 172.2MB 240ms 33ms openjdk 20
java 1.java 219ms 3.4ms 173.4MB 237ms 37ms openjdk 19
java 1-m.java 266ms 13ms 245.1MB 367ms 70ms graal/jvm 17.0.4
java 1.java 436ms 11ms 353.1MB 253ms 237ms openjdk/zgc 19

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1.java 545ms 1.4ms 88.5MB 593ms 17ms graal/jvm 17.0.4
java 1.java 555ms 2.6ms 42.2MB 570ms 10ms openjdk 20
java 1.java 558ms 4.1ms 42.2MB 573ms 13ms openjdk 19
java 1.java 610ms 3.8ms 42.6MB 587ms 53ms openjdk/zgc 19
java 2.java 1908ms 19ms 551.1MB 1937ms 120ms openjdk 20
java 2.java 1908ms 15ms 543.4MB 1937ms 117ms openjdk 19
odin 1.odin 2504ms 2.8ms 0.9MB 2493ms 0ms odin 2022
java 2.java 2579ms 8.8ms 1221.6MB 1997ms 767ms openjdk/zgc 19

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1.java 137ms 2.0ms 42.9MB 157ms 13ms openjdk 20
java 1.java 143ms 6.7ms 42.3MB 160ms 13ms openjdk 19
java 1.java 145ms 14ms 86.5MB 183ms 23ms graal/jvm 17.0.4
java 1.java 181ms 1.3ms 42.2MB 160ms 50ms openjdk/zgc 19
odin 1.odin 254ms 0.9ms 0.8MB 240ms 0ms odin 2022
java 2.java 410ms 8.8ms 339.4MB 477ms 70ms openjdk 20
java 2.java 415ms 5.0ms 353.2MB 477ms 73ms openjdk 19
java 2.java 681ms 3.0ms 454.9MB 543ms 293ms openjdk/zgc 19

nsieve

Input: 12

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1.java 693ms 12ms 88.9MB 727ms 17ms openjdk 20
java 1.java 710ms 19ms 86.4MB 733ms 20ms openjdk 19
odin 1.odin 731ms 17ms 40.6MB 703ms 10ms odin 2022
java 1.java 906ms 6.4ms 110.9MB 870ms 77ms openjdk/zgc 19
java 2.java 1009ms 4.8ms 52.5MB 1050ms 7ms openjdk 20
java 2.java 1023ms 0.1ms 51.3MB 1010ms 53ms openjdk/zgc 19
java 2.java 1034ms 32ms 54.1MB 1070ms 13ms openjdk 19
java 1-m.java 1209ms 11ms 163.8MB 1860ms 63ms graal/jvm 17.0.4
odin 2.odin 1218ms 9.6ms 6.4MB 1207ms 3ms odin 2022
java 2-m.java 1836ms 24ms 126.4MB 3397ms 40ms graal/jvm 17.0.4

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
odin 1.odin 123ms 0.6ms 11.3MB 110ms 0ms odin 2022
java 1.java 230ms 2.9ms 62.0MB 260ms 10ms openjdk 19
java 1.java 230ms 1.4ms 60.8MB 257ms 20ms openjdk 20
java 1.java 277ms 1.4ms 59.2MB 257ms 67ms openjdk/zgc 19
odin 2.odin 304ms 3.0ms 2.8MB 293ms 0ms odin 2022
java 2.java 321ms 3.1ms 46.7MB 363ms 10ms openjdk 20
java 2.java 326ms 6.8ms 48.4MB 360ms 13ms openjdk 19
java 1-m.java 330ms 6.9ms 135.8MB 470ms 47ms graal/jvm 17.0.4
java 2.java 355ms 4.1ms 44.3MB 343ms 50ms openjdk/zgc 19
java 2-m.java 606ms 0.6ms 127.4MB 1067ms 50ms graal/jvm 17.0.4

pidigits

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1.java 4962ms 12ms 381.9MB 5330ms 123ms graal/jvm 17.0.4
java 1.java timeout 0.0ms 0.0MB 0ms 0ms openjdk 19
java 1.java timeout 0.0ms 0.0MB 0ms 0ms openjdk 20
java 1.java timeout 0.0ms 0.0MB 0ms 0ms openjdk/zgc 19

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1.java 1344ms 7.9ms 378.3MB 1653ms 77ms graal/jvm 17.0.4
java 1.java 1429ms 20ms 279.4MB 1793ms 67ms openjdk 19
java 1.java 1437ms 13ms 294.7MB 1797ms 73ms openjdk 20
java 1.java 1999ms 43ms 1032.3MB 2023ms 640ms openjdk/zgc 19

regex-redux

Input: 2500000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 3.java timeout 0.0ms 0.0MB 0ms 0ms graal/jvm 17.0.4
java 3.java timeout 0.0ms 0.0MB 0ms 0ms openjdk 19
java 3.java timeout 0.0ms 0.0MB 0ms 0ms openjdk 20
java 3.java timeout 0.0ms 0.0MB 0ms 0ms openjdk/zgc 19

Input: 250000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 3.java 1050ms 30ms 191.5MB 1460ms 50ms graal/jvm 17.0.4
java 3.java 1060ms 7.0ms 111.4MB 1393ms 40ms openjdk 19
java 3.java 1072ms 7.5ms 113.6MB 1437ms 27ms openjdk 20
java 3.java 1152ms 8.1ms 157.7MB 1320ms 127ms openjdk/zgc 19

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 2-m.java 4304ms 3.1ms 108.4MB 8300ms 40ms graal/jvm 17.0.4
odin 1.odin 4495ms 0.6ms 2.8MB 4483ms 0ms odin 2022
java 2.java timeout 0.0ms 0.0MB 0ms 0ms openjdk 19
java 2.java timeout 0.0ms 0.0MB 0ms 0ms openjdk 20
java 2.java timeout 0.0ms 0.0MB 0ms 0ms openjdk/zgc 19

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
odin 1.odin 1127ms 0.6ms 2.1MB 1117ms 0ms odin 2022
java 2-m.java 1236ms 17ms 104.3MB 2263ms 53ms graal/jvm 17.0.4
java 2-m.java 1594ms 56ms 44.3MB 3033ms 7ms openjdk 20
java 2-m.java 1771ms 183ms 44.6MB 3290ms 53ms openjdk/zgc 19
java 2-m.java 1825ms 192ms 44.4MB 3473ms 17ms openjdk 19

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
odin 1.odin 284ms 1.0ms 1.8MB 273ms 0ms odin 2022
java 2-m.java 430ms 9.7ms 99.1MB 727ms 30ms graal/jvm 17.0.4
java 2-m.java 589ms 3.9ms 44.2MB 1060ms 13ms openjdk 19
java 2-m.java 600ms 7.1ms 42.7MB 1070ms 20ms openjdk 20
java 2-m.java 648ms 11ms 44.4MB 1083ms 53ms openjdk/zgc 19

coro-prime-sieve

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1-m.java 3270ms 158ms 200.1MB 6133ms 83ms openjdk 19
java 1-m.java 4149ms 116ms 924.9MB 7387ms 497ms openjdk/zgc 19
java 1.java timeout 0.0ms 0.0MB 0ms 0ms openjdk 20

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1-m.java 733ms 72ms 115.5MB 1300ms 40ms openjdk 19
java 1-m.java 929ms 22ms 325.8MB 1493ms 193ms openjdk/zgc 19
java 1-m.java 953ms 129ms 116.0MB 1717ms 43ms openjdk 20