On Aug 20, 2005, at 20:12, Nicolas Cannasse wrote:


Hi list,

I tried to have a deeper look at Parrot so I installed latest PXPerl with Parrot 0.2.3 and I tried to run some benchmarks on my computer in order to
compare with Neko.

I was thinking that Parrot JIT would outperform Neko VM easily but I got
theses results :
fib(35) Neko :  8 seconds
fib(35) Parrot (benchmarks/fib.imc) : 34 seconds
So I would like to ask if the JIT is enabled in my Parrot install and if not
how can I enable it ?
Or am I missing something about the way Parrot is handling integer values ?

fib is one of the few benchmarks that currently performs very badly due to huge function call overhead (mainly L2 cache misses). I'm currently working on a different call scheme, which eventually gets rid of these problems.

For reasonable performance comparisons you would also compile an optimized executable:
$ make realclean
$ perl Configure.pl --optimize
$ make

To see, if JIT really works (and how fast it is)
$  ./parrot  -j examples/assembly/mops.pasm

The MOPS test shows the theoretical maximum of opcode dispatch, which is one hardware CPU instruction / parrot instruction for JIT on i386 and ppc. You can evaluate different run loops:

$ ./parrot -S  ...   # switched core
$ ./parrot -C  ...   # direct threaded CGP core
...
In examples/mops you find more mops tests for different HLLs.

A more realistic benchmarks is:
$ ./parrot  -j examples/assembly/md5sum.imc parrot

which runs on x86 about at half the speed of Perl/XS, which is written in C.

Thanks,
Nicolas

leo

Reply via email to