Chapel VS Java benchmarks

Current benchmark data was generated on Sun Jul 13 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 455ms 1.0ms 575.9MB 557ms 83ms openjdk 21
java 2-m.java 469ms 4.8ms 641.2MB 673ms 113ms graal/jvm 17.0.8
java 2.java 473ms 8.9ms 642.1MB 573ms 103ms openjdk 23
java 2.java 1191ms 22ms 1054.4MB 577ms 773ms openjdk/zgc 21
chapel 4.chpl 1953ms 3.7ms 62.3MB 1943ms 0ms chpl 1.31.0
chapel 3.chpl 2034ms 7.2ms 62.3MB 2027ms 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 125ms 0.6ms 167.1MB 157ms 33ms openjdk 21
java 2.java 129ms 5.0ms 96.0MB 167ms 27ms openjdk 23
java 2-m.java 151ms 3.3ms 227.2MB 220ms 63ms graal/jvm 17.0.8
chapel 4.chpl 183ms 1.2ms 32.4MB 180ms 0ms chpl 1.31.0
chapel 3.chpl 184ms 0.6ms 32.3MB 180ms 0ms chpl 1.31.0
java 2.java 305ms 2.0ms 241.5MB 157ms 197ms openjdk/zgc 21

coro-prime-sieve

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 1-m.chpl 2252ms 44ms 799.1MB 4370ms 97ms chpl 1.31.0
java 1-m.java 2305ms 190ms 264.5MB 8783ms 140ms openjdk 21
java 1-m.java 2419ms 254ms 243.1MB 9207ms 137ms openjdk 23
java 1-m.java 2938ms 109ms 1226.1MB 9570ms 1070ms openjdk/zgc 21

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 1-m.chpl 220ms 8.1ms 759.6MB 343ms 67ms chpl 1.31.0
java 1-m.java 464ms 5.9ms 96.8MB 1527ms 67ms openjdk 23
java 1-m.java 473ms 16ms 121.6MB 1597ms 57ms openjdk 21
java 1-m.java 654ms 16ms 213.4MB 1803ms 237ms 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.0ms 32.5MB 70ms 0ms chpl 1.31.0
java 1-m.java 555ms 15ms 273.6MB 1557ms 70ms openjdk 21
java 1-m.java 623ms 13ms 381.7MB 1183ms 123ms graal/jvm 17.0.8
java 1-m.java 641ms 58ms 267.1MB 1720ms 63ms openjdk 23
java 1-m.java 950ms 37ms 500.2MB 1577ms 403ms openjdk/zgc 21

Input: 100000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 1.chpl 33ms 1.6ms 30.5MB 30ms 0ms chpl 1.31.0
java 1-m.java 305ms 11ms 226.1MB 607ms 67ms graal/jvm 17.0.8
java 1-m.java 355ms 28ms 177.9MB 977ms 43ms openjdk 21
java 1-m.java 375ms 23ms 127.9MB 1017ms 50ms openjdk 23
java 1-m.java 508ms 21ms 215.5MB 1010ms 213ms openjdk/zgc 21

fasta

Input: 2500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 5-m.chpl 106ms 1.6ms 28.4MB 190ms 0ms chpl 1.31.0
java 4.java 448ms 4.7ms 101.5MB 633ms 37ms graal/jvm 17.0.8
java 4.java 458ms 6.9ms 47.4MB 543ms 17ms openjdk 21
java 4.java 464ms 8.8ms 49.1MB 557ms 20ms openjdk 23
java 4.java 566ms 2.0ms 45.1MB 530ms 140ms openjdk/zgc 21

Input: 250000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 5.chpl 21ms 1.9ms 28.4MB 20ms 0ms chpl 1.31.0
java 4.java 120ms 2.9ms 46.6MB 163ms 13ms openjdk 21
java 4.java 127ms 4.2ms 48.0MB 173ms 17ms openjdk 23
java 4-m.java 131ms 4.7ms 94.1MB 183ms 37ms graal/jvm 17.0.8
java 4.java 242ms 2.2ms 43.9MB 163ms 137ms 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.6ms 28.8MB 0ms 0ms chpl 1.31.0
java 1.java 62ms 2.2ms 52.9MB 66ms 18ms graal/jvm 17.0.8
java 1.java 67ms 7.0ms 43.8MB 74ms 18ms openjdk 21
java 1.java 71ms 5.3ms 44.7MB 74ms 16ms openjdk 23
java 1.java 193ms 7.2ms 42.8MB 82ms 136ms 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 758ms 2.5ms 86.9MB 1433ms 10ms chpl 1.31.0
java 3-m.java 1030ms 58ms 127.6MB 3553ms 33ms openjdk 21
java 3-m.java 1084ms 15ms 158.2MB 3720ms 43ms openjdk 23
java 3-m.java 1100ms 49ms 179.0MB 3693ms 73ms graal/jvm 17.0.8
java 3-m.java 1449ms 55ms 179.3MB 4600ms 200ms openjdk/zgc 21

Input: 250000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 3-m.chpl 117ms 1.8ms 87.0MB 203ms 3ms chpl 1.31.0
java 3-m.java 338ms 53ms 96.3MB 993ms 50ms openjdk 21
java 3-m.java 341ms 21ms 136.0MB 907ms 60ms graal/jvm 17.0.8
java 3-m.java 345ms 34ms 88.9MB 1023ms 40ms openjdk 23
java 3-m.java 426ms 6.6ms 98.2MB 890ms 170ms openjdk/zgc 21

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 2.chpl 322ms 1.9ms 28.9MB 317ms 0ms chpl 1.31.0
java 1.java 442ms 1.0ms 45.1MB 480ms 17ms openjdk 21
java 1.java 444ms 3.9ms 48.3MB 480ms 23ms openjdk 23
java 1.java 454ms 0.5ms 81.1MB 490ms 30ms graal/jvm 17.0.8
java 1.java 563ms 6.0ms 44.7MB 483ms 133ms openjdk/zgc 21
java 2.java 1235ms 3.8ms 571.4MB 1363ms 87ms openjdk 21
java 2.java 1310ms 91ms 794.4MB 1433ms 93ms openjdk 23
java 2.java 3270ms 60ms 2461.0MB 1670ms 1817ms openjdk/zgc 21

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 2.chpl 43ms 0.4ms 28.8MB 40ms 0ms chpl 1.31.0
java 1.java 116ms 4.0ms 45.4MB 143ms 23ms openjdk 21
java 1.java 119ms 2.3ms 81.5MB 150ms 27ms graal/jvm 17.0.8
java 1.java 120ms 2.0ms 47.9MB 157ms 13ms openjdk 23
java 1.java 240ms 5.7ms 44.7MB 153ms 140ms openjdk/zgc 21
java 2-m.java 294ms 9.4ms 366.4MB 437ms 50ms openjdk 21
java 2-m.java 317ms 4.3ms 397.4MB 450ms 67ms openjdk 23
java 2.java 674ms 5.7ms 533.2MB 460ms 400ms openjdk/zgc 21

pidigits

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 2.chpl 446ms 0.8ms 28.3MB 440ms 0ms chpl 1.31.0
java 1.java 3212ms 15ms 444.6MB 3627ms 110ms graal/jvm 17.0.8
java 1.java 3669ms 54ms 426.1MB 4610ms 110ms openjdk 21
java 1.java 3752ms 19ms 501.5MB 4603ms 120ms openjdk 23
java 1.java timeout 0.0ms 1758.6MB 4670ms 1183ms openjdk/zgc 21

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 2.chpl 115ms 1.5ms 30.4MB 110ms 0ms chpl 1.31.0
java 1.java 896ms 13ms 444.3MB 1243ms 87ms graal/jvm 17.0.8
java 1-m.java 1001ms 28ms 353.6MB 1797ms 90ms openjdk 21
java 1-m.java 1015ms 31ms 423.3MB 1787ms 93ms openjdk 23
java 1.java 2003ms 34ms 1358.4MB 1703ms 1060ms 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 1387ms 2.0ms 246.2MB 1340ms 40ms chpl 1.31.0
java 3.java timeout 0.0ms 407.7MB 5397ms 93ms graal/jvm 17.0.8
java 3.java timeout 0.0ms 302.1MB 5333ms 53ms openjdk 21
java 3.java timeout 0.0ms 304.8MB 5320ms 67ms openjdk 23
java 3.java timeout 0.0ms 471.1MB 4957ms 303ms openjdk/zgc 21

Input: 250000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 3.chpl 162ms 2.3ms 48.9MB 143ms 10ms chpl 1.31.0
java 3-m.java 782ms 10ms 175.4MB 1160ms 47ms graal/jvm 17.0.8
java 3-m.java 806ms 18ms 130.9MB 1183ms 33ms openjdk 21
java 3-m.java 814ms 8.2ms 132.4MB 1230ms 30ms openjdk 23
java 3.java 963ms 9.6ms 133.9MB 1133ms 177ms openjdk/zgc 21

secp256k1

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 1.chpl 1210ms 43ms 29.0MB 1203ms 0ms chpl 1.31.0

Input: 500

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 1.chpl 315ms 12ms 29.1MB 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 1924ms 19ms 28.9MB 3823ms 0ms chpl 1.31.0
java 2-m.java 1988ms 6.6ms 47.8MB 7613ms 23ms openjdk 21
java 2-m.java 1996ms 1.7ms 48.5MB 7643ms 30ms openjdk 23
java 2-m.java 2127ms 4.4ms 45.5MB 7673ms 153ms openjdk/zgc 21
java 2-m.java 2508ms 27ms 94.1MB 9400ms 37ms graal/jvm 17.0.8
chapel 1.chpl 3743ms 29ms 28.8MB 3740ms 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 492ms 2.1ms 28.9MB 953ms 0ms chpl 1.31.0
java 2-m.java 602ms 2.3ms 47.5MB 2150ms 17ms openjdk 21
java 2-m.java 612ms 9.6ms 48.6MB 2137ms 20ms openjdk 23
java 2-m.java 737ms 8.8ms 45.3MB 2157ms 143ms openjdk/zgc 21
java 2-m.java 761ms 18ms 94.5MB 2673ms 37ms graal/jvm 17.0.8
chapel 1.chpl 939ms 3.2ms 28.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 138ms 9.9ms 28.9MB 250ms 3ms chpl 1.31.0
chapel 1.chpl 248ms 1.3ms 28.8MB 240ms 0ms chpl 1.31.0
java 2-m.java 253ms 12ms 47.6MB 770ms 17ms openjdk 21
java 2-m.java 255ms 4.3ms 48.5MB 763ms 20ms openjdk 23
java 2-m.java 328ms 5.5ms 93.3MB 1020ms 40ms graal/jvm 17.0.8
java 2-m.java 381ms 12ms 45.7MB 770ms 147ms openjdk/zgc 21