Chapel 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.)

binarytrees

Input: 18

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 2.java 446ms 6.6ms 574.3MB 540ms 80ms openjdk 21
java 2-m.java 461ms 12ms 639.3MB 650ms 120ms graal/jvm 17.0.8
java 2.java 467ms 4.6ms 626.3MB 577ms 97ms openjdk 23
java 2.java 1242ms 10ms 1063.4MB 587ms 813ms openjdk/zgc 21
chapel 4.chpl 1962ms 44ms 60.3MB 1950ms 0ms chpl 1.31.0
chapel 3.chpl 2019ms 12ms 60.3MB 2010ms 0ms chpl 1.31.0

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 2-m.java 122ms 0.5ms 168.2MB 157ms 33ms openjdk 21
java 2-m.java 126ms 6.9ms 98.0MB 163ms 30ms openjdk 23
java 2-m.java 147ms 7.7ms 226.3MB 220ms 57ms graal/jvm 17.0.8
chapel 4.chpl 185ms 1.2ms 32.4MB 180ms 0ms chpl 1.31.0
chapel 3.chpl 188ms 2.8ms 32.4MB 180ms 0ms chpl 1.31.0
java 2.java 305ms 2.4ms 241.7MB 147ms 210ms 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 2160ms 236ms 259.0MB 8187ms 127ms openjdk 21
chapel 1-m.chpl 2192ms 58ms 470.2MB 4273ms 73ms chpl 1.31.0
java 1-m.java 2442ms 127ms 242.9MB 9230ms 147ms openjdk 23
java 1-m.java 2866ms 129ms 1219.2MB 9147ms 1173ms openjdk/zgc 21

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 1-m.chpl 181ms 1.3ms 427.0MB 293ms 37ms chpl 1.31.0
java 1-m.java 418ms 14ms 92.2MB 1377ms 60ms openjdk 23
java 1-m.java 476ms 18ms 117.2MB 1580ms 63ms openjdk 21
java 1-m.java 673ms 18ms 230.2MB 1827ms 257ms openjdk/zgc 21

edigits

Input: 250001

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 1.chpl 71ms 3.7ms 32.4MB 70ms 0ms chpl 1.31.0
java 1-m.java 610ms 52ms 266.2MB 1650ms 67ms openjdk 21
java 1-m.java 611ms 12ms 371.3MB 1183ms 107ms graal/jvm 17.0.8
java 1-m.java 662ms 27ms 244.0MB 1750ms 73ms openjdk 23
java 1-m.java 959ms 39ms 495.7MB 1580ms 417ms openjdk/zgc 21

Input: 100000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 1.chpl 32ms 1.2ms 30.5MB 30ms 0ms chpl 1.31.0
java 1-m.java 296ms 14ms 226.0MB 593ms 63ms graal/jvm 17.0.8
java 1-m.java 327ms 2.6ms 195.7MB 893ms 57ms openjdk 21
java 1-m.java 384ms 14ms 126.9MB 1043ms 53ms openjdk 23
java 1-m.java 496ms 4.6ms 214.8MB 960ms 220ms openjdk/zgc 21

fasta

Input: 2500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 5-m.chpl 104ms 1.2ms 28.4MB 190ms 0ms chpl 1.31.0
java 4.java 438ms 1.8ms 100.5MB 603ms 43ms graal/jvm 17.0.8
java 4.java 455ms 3.1ms 47.6MB 537ms 20ms openjdk 21
java 4.java 458ms 2.9ms 49.1MB 547ms 17ms openjdk 23
java 4.java 570ms 1.8ms 45.0MB 543ms 137ms openjdk/zgc 21

Input: 250000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 5.chpl 22ms 2.2ms 28.4MB 20ms 0ms chpl 1.31.0
java 4.java 123ms 1.3ms 46.6MB 163ms 13ms openjdk 21
java 4.java 125ms 5.6ms 47.9MB 170ms 17ms openjdk 23
java 4-m.java 136ms 11ms 95.6MB 203ms 37ms graal/jvm 17.0.8
java 4.java 247ms 1.3ms 43.9MB 167ms 140ms openjdk/zgc 21

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 1.chpl 11ms 0.5ms 28.8MB 0ms 0ms chpl 1.31.0
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

knucleotide

Input: 2500000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 3-m.chpl 746ms 3.8ms 97.0MB 1413ms 10ms chpl 1.31.0
java 3-m.java 1065ms 28ms 129.8MB 3650ms 37ms openjdk 21
java 3-m.java 1100ms 41ms 156.1MB 3827ms 53ms openjdk 23
java 3-m.java 1115ms 11ms 177.5MB 3837ms 57ms graal/jvm 17.0.8
java 3-m.java 1444ms 60ms 179.1MB 4560ms 210ms openjdk/zgc 21

Input: 250000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 3-m.chpl 112ms 0.7ms 76.9MB 197ms 3ms chpl 1.31.0
java 3-m.java 326ms 4.7ms 102.1MB 960ms 43ms openjdk 21
java 3-m.java 343ms 22ms 134.8MB 940ms 53ms graal/jvm 17.0.8
java 3-m.java 344ms 15ms 101.3MB 1017ms 43ms openjdk 23
java 3-m.java 435ms 4.6ms 98.7MB 907ms 170ms openjdk/zgc 21

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 2.chpl 319ms 3.7ms 28.8MB 313ms 0ms chpl 1.31.0
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
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
chapel 2.chpl 45ms 0.9ms 28.9MB 40ms 0ms chpl 1.31.0
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
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

pidigits

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 2.chpl 442ms 11ms 30.3MB 437ms 0ms chpl 1.31.0
java 1.java 3176ms 11ms 442.6MB 3620ms 87ms graal/jvm 17.0.8
java 1.java 3621ms 96ms 430.3MB 4470ms 113ms openjdk 23
java 1.java 3656ms 83ms 353.4MB 4533ms 97ms openjdk 21
java 1.java timeout 0.0ms 1831.4MB 4633ms 1227ms openjdk/zgc 21

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 2.chpl 113ms 0.5ms 30.4MB 110ms 0ms chpl 1.31.0
java 1.java 881ms 8.8ms 441.3MB 1233ms 80ms graal/jvm 17.0.8
java 1-m.java 988ms 25ms 422.8MB 1780ms 93ms openjdk 21
java 1-m.java 1002ms 24ms 437.7MB 1777ms 103ms openjdk 23
java 1.java 2030ms 37ms 1345.0MB 1667ms 1083ms 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 1382ms 4.7ms 222.1MB 1337ms 37ms chpl 1.31.0
java 3.java timeout 0.0ms 407.6MB 5393ms 87ms graal/jvm 17.0.8
java 3.java timeout 0.0ms 302.3MB 5340ms 60ms openjdk 21
java 3.java timeout 0.0ms 304.8MB 5323ms 63ms openjdk 23
java 3.java timeout 0.0ms 467.8MB 4960ms 310ms openjdk/zgc 21

Input: 250000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 3.chpl 159ms 3.1ms 48.9MB 140ms 10ms chpl 1.31.0
java 3-m.java 761ms 6.1ms 177.1MB 1127ms 53ms graal/jvm 17.0.8
java 3-m.java 795ms 12ms 130.7MB 1180ms 33ms openjdk 21
java 3-m.java 821ms 23ms 132.4MB 1233ms 33ms openjdk 23
java 3.java 980ms 36ms 134.0MB 1170ms 197ms openjdk/zgc 21

secp256k1

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 1.chpl 1172ms 4.9ms 29.2MB 1167ms 0ms chpl 1.31.0

Input: 500

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 1.chpl 314ms 9.4ms 29.2MB 310ms 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 1917ms 12ms 28.9MB 3807ms 0ms chpl 1.31.0
java 2-m.java 1976ms 1.3ms 47.8MB 7553ms 27ms openjdk 21
java 2-m.java 1986ms 6.0ms 48.4MB 7583ms 20ms openjdk 23
java 2-m.java 2103ms 11ms 45.5MB 7567ms 150ms openjdk/zgc 21
java 2-m.java 2484ms 35ms 94.3MB 9307ms 47ms graal/jvm 17.0.8
chapel 1.chpl 3719ms 32ms 28.8MB 3710ms 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 489ms 4.6ms 29.0MB 953ms 0ms chpl 1.31.0
java 2-m.java 606ms 6.9ms 48.4MB 2150ms 20ms openjdk 23
java 2-m.java 608ms 6.0ms 47.9MB 2147ms 20ms openjdk 21
java 2-m.java 728ms 4.7ms 45.4MB 2140ms 143ms openjdk/zgc 21
java 2-m.java 766ms 2.2ms 95.1MB 2697ms 40ms graal/jvm 17.0.8
chapel 1.chpl 934ms 6.5ms 28.8MB 927ms 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 134ms 2.1ms 28.9MB 240ms 0ms chpl 1.31.0
chapel 1.chpl 248ms 6.1ms 28.8MB 243ms 0ms chpl 1.31.0
java 2-m.java 253ms 9.4ms 47.4MB 750ms 20ms openjdk 21
java 2-m.java 258ms 12ms 48.5MB 773ms 20ms openjdk 23
java 2-m.java 300ms 28ms 94.1MB 910ms 43ms graal/jvm 17.0.8
java 2-m.java 382ms 8.6ms 45.6MB 763ms 140ms openjdk/zgc 21