> I have an Athlon 700 too. With these compiler flags:
> 
> PERL-CFLAGS = -O3 -fomit-frame-pointer -pipe -s -march=pentium -ffast-math \
>         -fexpensive-optimizations -fno-strict-aliasing \
>         -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
> 
> I'm seeing 24 mops which puts Parrot even closer to Java. Do those

> flags improve your times?


I top out at about 21.8 with your flags, and about the same with some
optimization flags I've used before:

-I./include -s -O3 -fomit-frame-pointer -pipe -Wall -mpentiumpro 
-march=pentiumpro -funroll-loops -fexpensive-optimizations
-fno-strict-aliasing -ffast-math -fschedule-insns2 -mwide-multiply

I'm running egcs-2.91.66 which could be older than your compiler,
or my computer may just be a little slower than yours!

I get from 398-402 with pbc2c.


> When you run mops.pbc through pbc2c what kind of performance do
> you get?
> 
> I have a feeling that Parrot will end up with higher code density
> than a JVM so performance in "real world" cases will be better. Of
> course most of the effort in Java is going into JIT, so shooting for
> JVM interpreter speeds is likely to be shooting way too low.


I'm agree.  I was just curious if it was in the ballpark.  mops isn't
really a good benchmark either.

The code density is one thing that surprised me.  Even with 4 byte
opcodes and arguments, pbc is very reasonable.

I don't think it will be possible to get within an order of
magnitude of C or Java+JIT without a JIT or some precompilation to
native code, though I would be interested to see how a better dispatch
or alternate register file scheme works.  I haven't had much
opportunity to analyze the interpreter, but it sounds like you
guys are much more knowledgeable.  Writing a VM from the bottom up
sounds like a great opportunity to make optimization
easier, rather than, say, trying to make a Java VM fast where
you're stuck with a legacy virtual machine architecture.

-Kevin





Reply via email to