Perl VS Java benchmarks

Current benchmark data was generated on Fri May 20 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 696ms 2.2ms 409.6MB 713ms 83ms openjdk 19
java 2.java 732ms 12ms 407.3MB 713ms 120ms openjdk 18.0.1
java 2.java 1014ms 30ms 680.5MB 813ms 113ms graal/jvm 17.0.3
java 2.java 1293ms 8.5ms 1082.9MB 893ms 617ms openjdk/zgc 18.0.1
perl 1.pl timeout 0.0ms 0.0MB 0ms 0ms perl 5.34.1

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 2.java 165ms 4.3ms 107.3MB 167ms 37ms openjdk 19
java 2.java 170ms 6.4ms 107.5MB 173ms 20ms openjdk 18.0.1
java 2.java 296ms 1.4ms 243.7MB 183ms 150ms openjdk/zgc 18.0.1
java 2.java 495ms 4.1ms 170.5MB 243ms 27ms graal/jvm 17.0.3
perl 1.pl 2370ms 18ms 14.2MB 2353ms 3ms perl 5.34.1

fasta

Input: 2500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 4.java 506ms 1.2ms 42.0MB 553ms 20ms openjdk 18.0.1
java 4.java 515ms 4.6ms 41.1MB 577ms 13ms openjdk 19
java 4.java 543ms 3.4ms 38.8MB 560ms 53ms openjdk/zgc 18.0.1
java 4.java 930ms 2.1ms 126.2MB 910ms 47ms graal/jvm 17.0.3
perl 1.pl 4382ms 65ms 10.9MB 4367ms 0ms perl 5.34.1

Input: 250000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 4.java 141ms 5.7ms 39.0MB 170ms 7ms openjdk 18.0.1
java 4.java 145ms 4.3ms 39.1MB 167ms 13ms openjdk 19
java 4.java 181ms 3.0ms 40.2MB 170ms 47ms openjdk/zgc 18.0.1
perl 1.pl 448ms 6.1ms 6.6MB 437ms 0ms perl 5.34.1
java 4.java 464ms 4.5ms 89.8MB 187ms 23ms graal/jvm 17.0.3

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
perl 1.pl 2.8ms 0.8ms 5.0MB 0ms 0ms perl 5.34.1
java 1.java 71ms 3.3ms 59.7MB 64ms 14ms graal/jvm 17.0.3
java 1.java 75ms 4.6ms 38.7MB 76ms 6ms openjdk 18.0.1
java 1.java 78ms 3.9ms 38.4MB 76ms 6ms openjdk 19
java 1.java 115ms 2.8ms 38.3MB 76ms 52ms openjdk/zgc 18.0.1

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1.java 551ms 5.5ms 40.5MB 567ms 13ms openjdk 18.0.1
java 1.java 554ms 3.0ms 39.8MB 567ms 10ms openjdk 19
java 1.java 602ms 0.9ms 40.9MB 573ms 53ms openjdk/zgc 18.0.1
java 1.java 856ms 5.8ms 83.0MB 570ms 23ms graal/jvm 17.0.3
java 2.java 1864ms 6.1ms 544.3MB 1893ms 117ms openjdk 19
java 2.java 1934ms 11ms 547.2MB 1927ms 157ms openjdk 18.0.1
java 2.java 2548ms 12ms 1221.8MB 1943ms 790ms openjdk/zgc 18.0.1
perl 2.pl timeout 0.0ms 0.0MB 0ms 0ms perl 5.34.1

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1.java 135ms 3.2ms 40.6MB 147ms 17ms openjdk 18.0.1
java 1.java 136ms 2.9ms 41.5MB 147ms 17ms openjdk 19
java 1.java 188ms 6.9ms 38.4MB 160ms 53ms openjdk/zgc 18.0.1
java 2.java 410ms 4.1ms 337.4MB 470ms 83ms openjdk 19
java 2.java 418ms 12ms 322.7MB 483ms 73ms openjdk 18.0.1
java 1.java 452ms 2.8ms 88.4MB 170ms 23ms graal/jvm 17.0.3
java 2.java 668ms 2.0ms 471.8MB 523ms 297ms openjdk/zgc 18.0.1
perl 2.pl 3240ms 29ms 6.4MB 3223ms 0ms perl 5.34.1

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 2-m.java 4196ms 119ms 114.4MB 8067ms 43ms graal/jvm 17.0.3
java 2.java timeout 0.0ms 0.0MB 0ms 0ms openjdk 18.0.1
java 2.java timeout 0.0ms 0.0MB 0ms 0ms openjdk 19
java 2.java timeout 0.0ms 0.0MB 0ms 0ms openjdk/zgc 18.0.1
perl 4.pl timeout 0.0ms 0.0MB 0ms 0ms perl 5.34.1

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 2-m.java 1250ms 41ms 113.4MB 2290ms 43ms graal/jvm 17.0.3
java 2-m.java 1869ms 283ms 40.1MB 3540ms 17ms openjdk 19
java 2-m.java 2399ms 256ms 38.9MB 4587ms 13ms openjdk 18.0.1
java 2-m.java 2632ms 59ms 38.7MB 4990ms 53ms openjdk/zgc 18.0.1
perl 4.pl timeout 0.0ms 0.0MB 0ms 0ms perl 5.34.1

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 2-m.java 550ms 46ms 39.9MB 977ms 10ms openjdk 19
java 2-m.java 719ms 15ms 40.3MB 1293ms 23ms openjdk 18.0.1
java 2.java 745ms 21ms 103.0MB 733ms 23ms graal/jvm 17.0.3
java 2-m.java 782ms 4.4ms 39.0MB 1343ms 57ms openjdk/zgc 18.0.1
perl 4.pl timeout 0.0ms 0.0MB 0ms 0ms perl 5.34.1