Chapel 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
chapel 4.chpl 1944ms 12ms 66.2MB 1933ms 7ms chpl 1.31.0
chapel 3.chpl 2115ms 17ms 66.3MB 2100ms 0ms chpl 1.31.0

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
chapel 4.chpl 191ms 2.3ms 36.3MB 180ms 7ms chpl 1.31.0
chapel 3.chpl 198ms 1.7ms 34.3MB 183ms 7ms chpl 1.31.0
java 2.java 314ms 1.3ms 241.4MB 153ms 213ms openjdk/zgc 21

coro-prime-sieve

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1-m.java 1479ms 121ms 258.9MB 5493ms 127ms openjdk 23
java 1-m.java 1911ms 174ms 261.1MB 7210ms 130ms openjdk 21
chapel 1-m.chpl 2296ms 27ms 506.1MB 4477ms 70ms chpl 1.31.0
java 1-m.java 2816ms 55ms 1230.1MB 8900ms 1077ms openjdk/zgc 21

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 1-m.chpl 203ms 23ms 450.8MB 333ms 33ms chpl 1.31.0
java 1-m.java 370ms 49ms 84.9MB 1203ms 50ms openjdk 23
java 1-m.java 436ms 31ms 123.1MB 1460ms 57ms openjdk 21
java 1-m.java 668ms 28ms 216.5MB 1783ms 257ms openjdk/zgc 21

edigits

Input: 250001

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 1.chpl 79ms 0.6ms 36.5MB 70ms 0ms chpl 1.31.0
java 1-m.java 652ms 40ms 265.4MB 1723ms 73ms openjdk 23
java 1-m.java 673ms 9.3ms 264.3MB 1770ms 67ms openjdk 21
java 1-m.java 695ms 70ms 353.3MB 1313ms 137ms graal/jvm 17.0.8
java 1-m.java 969ms 31ms 521.1MB 1597ms 453ms openjdk/zgc 21

Input: 100000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 1.chpl 40ms 0.2ms 34.5MB 30ms 0ms chpl 1.31.0
java 1-m.java 320ms 17ms 241.0MB 623ms 73ms graal/jvm 17.0.8
java 1-m.java 360ms 30ms 179.2MB 963ms 63ms openjdk 21
java 1-m.java 372ms 19ms 173.4MB 1023ms 43ms openjdk 23
java 1-m.java 513ms 31ms 215.7MB 987ms 223ms openjdk/zgc 21

fasta

Input: 2500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 5-m.chpl 111ms 1.0ms 32.4MB 193ms 0ms chpl 1.31.0
java 4.java 440ms 1.7ms 107.1MB 620ms 27ms graal/jvm 17.0.8
java 4.java 450ms 5.5ms 47.4MB 530ms 17ms openjdk 21
java 4.java 455ms 1.9ms 47.5MB 543ms 17ms openjdk 23
java 4.java 565ms 1.6ms 45.1MB 533ms 133ms openjdk/zgc 21

Input: 250000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 5.chpl 29ms 0.6ms 32.4MB 23ms 3ms chpl 1.31.0
java 4.java 119ms 4.0ms 46.5MB 167ms 7ms openjdk 23
java 4.java 124ms 1.1ms 46.2MB 157ms 23ms openjdk 21
java 4-m.java 144ms 8.0ms 99.7MB 213ms 30ms graal/jvm 17.0.8
java 4.java 242ms 5.6ms 43.9MB 167ms 133ms openjdk/zgc 21

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 1.chpl 16ms 0.2ms 32.8MB 10ms 0ms chpl 1.31.0
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
chapel 3-m.chpl 766ms 18ms 101.0MB 1443ms 7ms chpl 1.31.0
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
chapel 3-m.chpl 120ms 0.8ms 90.9MB 207ms 3ms chpl 1.31.0
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

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 2.chpl 329ms 2.0ms 32.8MB 313ms 7ms chpl 1.31.0
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

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 2.chpl 51ms 1.6ms 32.9MB 47ms 0ms chpl 1.31.0
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
java 2.java 681ms 8.7ms 528.1MB 440ms 427ms openjdk/zgc 21

pidigits

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 2.chpl 452ms 1.3ms 34.4MB 443ms 0ms chpl 1.31.0
java 1.java 3191ms 33ms 448.1MB 3637ms 107ms graal/jvm 17.0.8
java 1.java 3685ms 53ms 351.8MB 4547ms 103ms openjdk 21
java 1.java 3771ms 108ms 349.5MB 4527ms 107ms openjdk 23
java 1.java timeout 0.0ms 1824.0MB 4710ms 1153ms openjdk/zgc 21

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 2.chpl 122ms 1.3ms 34.2MB 113ms 0ms chpl 1.31.0
java 1.java 886ms 25ms 443.5MB 1233ms 90ms graal/jvm 17.0.8
java 1-m.java 985ms 30ms 350.6MB 1777ms 103ms openjdk 21
java 1-m.java 1029ms 9.0ms 353.0MB 1767ms 87ms openjdk 23
java 1.java 1995ms 36ms 1348.5MB 1753ms 1007ms openjdk/zgc 21

regex-redux

Input: 2500000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 3.chpl 1388ms 3.3ms 224.1MB 1340ms 40ms chpl 1.31.0
java 3.java timeout 0.0ms 411.4MB 5437ms 90ms graal/jvm 17.0.8
java 3.java timeout 0.0ms 303.5MB 5317ms 57ms openjdk 21
java 3.java timeout 0.0ms 303.4MB 5307ms 70ms openjdk 23
java 3.java timeout 0.0ms 469.6MB 4963ms 307ms openjdk/zgc 21

Input: 250000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 3.chpl 169ms 0.9ms 52.9MB 150ms 10ms chpl 1.31.0
java 3-m.java 783ms 12ms 181.0MB 1160ms 67ms graal/jvm 17.0.8
java 3-m.java 809ms 17ms 130.9MB 1203ms 37ms openjdk 21
java 3-m.java 810ms 3.6ms 130.8MB 1213ms 43ms openjdk 23
java 3.java 967ms 17ms 133.5MB 1183ms 177ms openjdk/zgc 21

secp256k1

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 1.chpl 1183ms 3.7ms 33.0MB 1170ms 3ms chpl 1.31.0

Input: 500

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 1.chpl 311ms 1.6ms 33.1MB 307ms 0ms chpl 1.31.0

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 1-m.chpl 1911ms 0.6ms 32.9MB 3783ms 0ms chpl 1.31.0
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
chapel 1.chpl 3712ms 4.9ms 32.8MB 3703ms 0ms chpl 1.31.0

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 1-m.chpl 496ms 1.2ms 32.9MB 953ms 0ms chpl 1.31.0
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
chapel 1.chpl 944ms 2.4ms 32.8MB 933ms 0ms chpl 1.31.0

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 1-m.chpl 140ms 0.8ms 33.0MB 240ms 7ms chpl 1.31.0
java 2-m.java 233ms 0.9ms 47.6MB 667ms 20ms openjdk 21
java 2-m.java 243ms 5.5ms 47.9MB 727ms 23ms openjdk 23
chapel 1.chpl 252ms 1.7ms 32.8MB 247ms 0ms chpl 1.31.0
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