Perl VS Rust 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
rust 4.rs 1792ms 160ms 33.7MB 1770ms 7ms rustc 1.61.0
rust 3.rs 1864ms 18ms 49.8MB 1833ms 17ms rustc 1.61.0
rust 5.rs 2061ms 144ms 33.9MB 2040ms 3ms rustc 1.61.0
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
rust 4.rs 155ms 13ms 5.8MB 140ms 0ms rustc 1.61.0
rust 5.rs 171ms 15ms 5.9MB 157ms 0ms rustc 1.61.0
rust 3.rs 182ms 1.8ms 7.8MB 170ms 0ms rustc 1.61.0
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
rust 5c-m.rs 180ms 3.2ms 1.3MB 313ms 3ms rustc 1.63.0
rust 5-m.rs 206ms 1.1ms 1.3MB 370ms 0ms rustc 1.61.0
rust 1c.rs 234ms 0.2ms 0.7MB 227ms 0ms rustc 1.63.0
rust 1.rs 315ms 0.7ms 0.6MB 307ms 0ms rustc 1.61.0
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
rust 1c.rs 28ms 2.3ms 0.7MB 20ms 0ms rustc 1.63.0
rust 5c-m.rs 29ms 2.8ms 1.3MB 33ms 0ms rustc 1.63.0
rust 5-m.rs 29ms 1.4ms 1.3MB 33ms 0ms rustc 1.61.0
rust 1.rs 35ms 1.1ms 2.1MB 23ms 0ms rustc 1.61.0
perl 1.pl 448ms 6.1ms 6.6MB 437ms 0ms perl 5.34.1

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 1.rs 2.1ms 1.0ms 0.6MB 0ms 0ms rustc 1.63.0
perl 1.pl 2.8ms 0.8ms 5.0MB 0ms 0ms perl 5.34.1
rust 1.rs 6.1ms 9.2ms 0.6MB 0ms 0ms rustc 1.61.0

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 4-i.rs 253ms 0.8ms 0.6MB 240ms 0ms rustc 1.61.0
rust 7-i.rs 305ms 0.2ms 0.6MB 290ms 0ms rustc 1.61.0
rust 3.rs 319ms 0.2ms 0.6MB 310ms 0ms rustc 1.63.0
rust 2.rs 347ms 9.0ms 0.6MB 337ms 0ms rustc 1.61.0
rust 1.rs 390ms 11ms 0.6MB 377ms 0ms rustc 1.61.0
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
rust 4-i.rs 29ms 1.4ms 0.6MB 20ms 0ms rustc 1.61.0
rust 7-i.rs 33ms 1.1ms 0.6MB 23ms 0ms rustc 1.61.0
rust 3.rs 35ms 1.8ms 0.6MB 30ms 0ms rustc 1.63.0
rust 1.rs 42ms 1.4ms 0.6MB 30ms 0ms rustc 1.61.0
rust 2.rs 50ms 12ms 0.6MB 40ms 0ms rustc 1.61.0
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
rust 7-m.rs 1065ms 1.3ms 2.2MB 2063ms 0ms rustc 1.61.0
rust 8-m.rs 1067ms 3.9ms 2.3MB 2060ms 3ms rustc 1.63.0
rust 8.rs 2062ms 1.0ms 2.5MB 2050ms 0ms rustc 1.63.0
rust 7.rs 2063ms 0.4ms 2.1MB 2050ms 0ms rustc 1.61.0
rust 2-m.rs 2152ms 7.6ms 2.2MB 4170ms 3ms rustc 1.61.0
perl 4.pl timeout 0.0ms 0.0MB 0ms 0ms perl 5.34.1
rust 2.rs timeout 0.0ms 0.0MB 0ms 0ms rustc 1.61.0

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
rust 7-m.rs 275ms 1.2ms 0.7MB 510ms 0ms rustc 1.61.0
rust 8-m.rs 275ms 1.1ms 2.2MB 507ms 0ms rustc 1.63.0
rust 8.rs 518ms 0.3ms 2.2MB 510ms 0ms rustc 1.63.0
rust 7.rs 518ms 0.9ms 0.6MB 510ms 0ms rustc 1.61.0
rust 2-m.rs 543ms 1.0ms 2.1MB 1033ms 0ms rustc 1.61.0
rust 2.rs 1704ms 0.1ms 0.6MB 1690ms 0ms rustc 1.61.0
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
rust 8-m.rs 76ms 0.9ms 2.2MB 127ms 0ms rustc 1.63.0
rust 7-m.rs 76ms 1.2ms 0.7MB 127ms 0ms rustc 1.61.0
rust 8.rs 132ms 1.4ms 2.1MB 120ms 0ms rustc 1.63.0
rust 7.rs 133ms 1.1ms 0.6MB 120ms 0ms rustc 1.61.0
rust 2-m.rs 144ms 0.6ms 0.7MB 257ms 0ms rustc 1.61.0
rust 2.rs 429ms 1.3ms 0.6MB 417ms 0ms rustc 1.61.0
perl 4.pl timeout 0.0ms 0.0MB 0ms 0ms perl 5.34.1