Stories
Slash Boxes
Comments
NOTE: use Perl; is on undef hiatus. You can read content, but you can't post it. More info will be forthcoming forthcomingly.

All the Perl that's Practical to Extract and Report

use Perl Log In

Log In

[ Create a new account ]

korpenkraxar (9237)

korpenkraxar
  (email not shown publicly)

Journal of korpenkraxar (9237)

Friday May 29, 2009
05:58 PM

How to compare and benchmark Perl5 and Perl6 performance?

Hi all!

I am a big Perl fan and biologist who write and use Perl 5 daily for my studies of animal evolution. Perl is really big in the bioinformatics field, but I guess you all already knew that. Looking at the novel features of Perl 6, it seems as I and others in my field would enjoy using this version of the language even more :-)

Today I finally came around to downloading and compiling Rakudo Perl 6 and Parrot, which to my pleasant surprise was just as simple as detailed here http://rakudo.org/how-to-get-rakudo/ on my Archlinux X86_64 box. Your mileage may vary depending on OS, but most Linux distributions make it very easy for you to install the prerequisites you need to pull this off. You need stuff like the GNU C compiler, git, subversion and Perl 5, all of which are easily tracked down in your distro's package manager.

To make things clear before I go on: I am not a computer scientist or professional, full-time programmer. I simply use Perl because it lets me solve lots of data parsing, mining and analysis problems very quickly and close to how I think about the problem. That said, I am of course happy for all the performance optimizations I can get while running my perl scripts and programs. Speed of execution matters too, just as speed of development, and Perl 5 strikes a very nice balance for the stuff I am doing.

Using Perl 6 as programming language for day-to-day use in solving problems relevant to me also requires the Parrot interpreter/compiler to produce efficient code. I am unlikely to enjoy the nifty language novelties in Perl 6 if the code is horribly slow compared to what I am used to.

I decided to compare something really simple in Perl 5 and Perl 6 and just increment a number and put that number in the last cell of a growing array.

This is the Perl 5 version:


#!/usr/bin/perl -w

my $i = 0;

my @numbers;

until ( $i == 100000 ) {

$numbers[$i] = $i;

$i++;

}


Perl5: ~0.07s to complete, uses 26KB RAM at completion.

This is the corresponding Perl 6 version (bare with me, I do not know much Perl 6 yet so I really just translated the above code with minimal changes):


use v6;

my Int $i = 0;

my @numbers;

until ( $i == 100000 ) {

@numbers[$i] = $i;

$i++;

}


Rakudo Perl6: ~1m14s to complete, uses 1.4GB RAM at completion.

In this simple comparison, the Perl 5 implementation is >1000 times faster than Perl 6, which also uses >50000 times more memory than Perl 5.

Ouch.

I do not (want to?) believe this difference is due to the the way the new language is implemented and running in Parrot per se, but expect this to be due to lack of optimization and presence of bugs and leaks and perhaps my own ignorance of Perl 6. However, if this arbitrary code snippet is representative of the kind of performance regressions facing people curious to try the Rakudo implementation of Perl 6 out, it may be difficult to attract early adopters outside the core of the community for a while.

The problem is, how can I as a "real-world user" best track the development of Perl 6 from a performance perspective? Are there official or semi-official benchmark scripts around already that we could use?

I have a suggestion, which is to try implementing at least some of the benchmarks over at the The Computer Language Benchmarks Game http://shootout.alioth.debian.org/ in Perl 6. Is there someone around here who is interested in trying this out? Perhaps we could make a challenge out of it or something :-)