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