Chapel VS Javascript benchmarks

Current benchmark data was generated on Wed Feb 08 2023, full log can be found HERE

CONTRIBUTIONS are WELCOME!

[x86_64][2 cores] Intel(R) Xeon(R) Platinum 8171M 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
javascript 1.js 1662ms 23ms 244.3MB 2067ms 80ms bun 0.5.5
chapel 4.chpl 2946ms 5.9ms 64.3MB 2910ms 20ms chpl 1.29.0
chapel 3.chpl 3233ms 39ms 64.3MB 3197ms 17ms chpl 1.29.0
javascript 1.js 4772ms 40ms 260.9MB 3527ms 1607ms node 19.6.0

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 158ms 1.8ms 101.8MB 143ms 17ms bun 0.5.5
javascript 1.js 235ms 6.3ms 70.4MB 220ms 23ms node 19.6.0
chapel 4.chpl 279ms 2.6ms 34.3MB 260ms 7ms chpl 1.29.0
chapel 3.chpl 294ms 2.5ms 32.1MB 270ms 7ms chpl 1.29.0

coro-prime-sieve

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 2662ms 32ms 80.6MB 2730ms 40ms node 19.6.0
javascript 1.js 3952ms 13ms 110.6MB 3947ms 63ms bun 0.5.5
chapel 1-m.chpl 4803ms 115ms 83.5MB 9277ms 70ms chpl 1.29.0

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 246ms 11ms 62.4MB 217ms 23ms node 19.6.0
javascript 1.js 286ms 5.2ms 103.2MB 300ms 20ms bun 0.5.5
chapel 1-m.chpl 348ms 12ms 48.1MB 623ms 20ms chpl 1.29.0

edigits

Input: 250001

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 1.chpl 104ms 0.6ms 18.5MB 90ms 0ms chpl 1.29.0
javascript 1.js 455ms 3.5ms 98.1MB 427ms 23ms bun 0.5.5
javascript 1.js 475ms 4.1ms 60.0MB 497ms 17ms node 19.6.0

Input: 100000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 1.chpl 46ms 3.8ms 34.1MB 37ms 0ms chpl 1.29.0
javascript 1.js 220ms 4.3ms 52.6MB 233ms 10ms node 19.6.0
javascript 1.js 912ms 14ms 82.5MB 873ms 23ms bun 0.5.5

fasta

Input: 2500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 5-m.chpl 164ms 5.7ms 32.0MB 277ms 3ms chpl 1.29.0

Input: 250000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 5.chpl 33ms 3.1ms 22.0MB 30ms 7ms chpl 1.29.0

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 1.chpl 17ms 1.4ms 22.2MB 7ms 3ms chpl 1.29.0
javascript 1.js 20ms 1.3ms 54.3MB 3ms 7ms bun 0.5.5
javascript 1.js 56ms 5.4ms 42.8MB 34ms 10ms node 19.6.0

knucleotide

Input: 2500000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 3-m.chpl 1180ms 16ms 85.0MB 2157ms 33ms chpl 1.29.0

Input: 250000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 3-m.chpl 201ms 2.7ms 76.7MB 310ms 23ms chpl 1.29.0

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 2.chpl 485ms 2.4ms 22.2MB 467ms 7ms chpl 1.29.0
javascript 6.js 827ms 4.4ms 47.8MB 810ms 3ms node 19.6.0
javascript 6.js 1241ms 8.9ms 69.6MB 1223ms 13ms bun 0.5.5

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 2.chpl 70ms 1.7ms 32.2MB 47ms 7ms chpl 1.29.0
javascript 6.js 136ms 2.8ms 48.2MB 123ms 7ms node 19.6.0
javascript 6.js 152ms 0.7ms 68.3MB 140ms 10ms bun 0.5.5

pidigits

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 2.chpl 582ms 3.7ms 30.1MB 560ms 3ms chpl 1.29.0
javascript 3.js timeout 0.0ms 79.2MB 4967ms 37ms node 19.6.0

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 2.chpl 151ms 2.2ms 20.8MB 130ms 3ms chpl 1.29.0
javascript 3.js 1874ms 6.6ms 63.4MB 1860ms 17ms node 19.6.0

regex-redux

Input: 2500000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 3.chpl 2230ms 32ms 221.7MB 2030ms 187ms chpl 1.29.0

Input: 250000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 3.chpl 241ms 0.5ms 50.8MB 203ms 20ms chpl 1.29.0

secp256k1

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 1.chpl 1778ms 5.0ms 32.4MB 1753ms 10ms chpl 1.29.0
javascript 1.js 4510ms 47ms 105.1MB 4533ms 37ms bun 0.5.5
javascript 1.js 4699ms 15ms 51.8MB 4707ms 13ms node 19.6.0

Input: 500

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 1.chpl 461ms 0.8ms 32.4MB 447ms 3ms chpl 1.29.0
javascript 1.js 1160ms 6.5ms 103.2MB 1167ms 27ms bun 0.5.5
javascript 1.js 1230ms 5.1ms 50.5MB 1220ms 17ms node 19.6.0

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 1-m.chpl 2324ms 13ms 32.3MB 4533ms 10ms chpl 1.29.0
javascript 6-m.js 3350ms 43ms 69.2MB 6290ms 47ms node 19.6.0
chapel 1.chpl 4465ms 18ms 32.4MB 4443ms 7ms chpl 1.29.0

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 1-m.chpl 654ms 50ms 32.3MB 1177ms 10ms chpl 1.29.0
javascript 6-m.js 1043ms 7.9ms 71.9MB 1807ms 37ms node 19.6.0
chapel 1.chpl 1147ms 4.0ms 32.3MB 1130ms 3ms chpl 1.29.0

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 1-m.chpl 179ms 4.2ms 32.3MB 300ms 10ms chpl 1.29.0
chapel 1.chpl 309ms 5.9ms 32.3MB 287ms 7ms chpl 1.29.0
javascript 6.js 467ms 9.8ms 67.2MB 650ms 23ms node 19.6.0