Preening the parrot for show

1 view
Skip to first unread message

Nicholas Clark

unread,
Feb 19, 2007, 6:57:10 PM2/19/07
to perl6-i...@perl.org
There's a benchmark of Ruby implementations at

http://www.antoniocangiano.com/articles/2007/02/19/ruby-implementations-shootout-ruby-vs-yarv-vs-jruby-vs-gardens-point-ruby-net-vs-rubinius-vs-cardinal

(or http://xrl.us/uy5m )

There's a comment from Matt Diephouse

Did you build an optimized version of Parrot to use with Cardinal?
By default, Parrot builds with all optimizations off and with all
debug flags on. This makes it slower but makes development a lot
easier.


The answer was "no"

I was wondering - are people doing benchmarks more likely to be using
release versions of parrot rather than svn head? If so, would it be a
good idea for positive publicity's sake to have the release versions
default to optimise?

Alternatively, given that gcc is capable of building with both debugging
and optimising, and a good number of people benchmarking will be on Linux,
would it be viable to make the default with gcc to be "-g -O2"?

Either way could try to skew third party benchmarks (and the unpublished
private benchmarks we don't even know about) in Parrot's favour.

Nicholas Clark

Tewk

unread,
Feb 19, 2007, 9:16:43 PM2/19/07
to Nicholas Clark, perl6-i...@perl.org
The cardinal numbers are most likely all bogus.
I'm surprised that any benchmarks ran at all.
The current cardinal implementation is extremely minimal. Basically
simple arithmetic.

Kevin

Joshua Isom

unread,
Feb 20, 2007, 4:05:30 AM2/20/07
to perl6-internals List

On Feb 19, 2007, at 5:57 PM, Nicholas Clark wrote:

> There's a benchmark of Ruby implementations at
>
> http://www.antoniocangiano.com/articles/2007/02/19/ruby-
> implementations-shootout-ruby-vs-yarv-vs-jruby-vs-gardens-point-ruby-
> net-vs-rubinius-vs-cardinal
>
> (or http://xrl.us/uy5m )
>
> There's a comment from Matt Diephouse
>
> Did you build an optimized version of Parrot to use with Cardinal?
> By default, Parrot builds with all optimizations off and with all
> debug flags on. This makes it slower but makes development a lot
> easier.
>
>
> The answer was "no"
>
> I was wondering - are people doing benchmarks more likely to be using
> release versions of parrot rather than svn head? If so, would it be a
> good idea for positive publicity's sake to have the release versions
> default to optimise?

And at the same time, why have the default runcore be the slow core.
It's probably better for testing, but for the vast majority of cases,
-Cj is faster(although in some instance -j's faster, or -C is faster,
or even -S, just depends on the specific benchmark). If we have
release versions default to optimize, shouldn't we also try and default
to a faster runcore? An optimized parrot with a faster runcore greatly
increases speed.

> Alternatively, given that gcc is capable of building with both
> debugging
> and optimising, and a good number of people benchmarking will be on
> Linux,
> would it be viable to make the default with gcc to be "-g -O2"?

Also, looking through the gcc manpage, one thing caught my eye about
optimizing, with regards to CG and CGP. "Note: When compiling a
program using computed gotos, a GCC extension, you may get better
runtime performance if you disable the global common subexpression
elimination pass by adding -fno-gcse to the command line." It would be
interesting to benchmark this with parrot, as the cg and cgp runcores
work by computed gotos. But, gcse fails on the cgp core because it's
too complicated anyway so it may not matter. Anything for that
hundredth of a second, right?

Nicholas Clark

unread,
Feb 20, 2007, 4:24:07 AM2/20/07
to Joshua Isom, perl6-internals List
On Tue, Feb 20, 2007 at 03:05:30AM -0600, Joshua Isom wrote:

> Also, looking through the gcc manpage, one thing caught my eye about
> optimizing, with regards to CG and CGP. "Note: When compiling a
> program using computed gotos, a GCC extension, you may get better
> runtime performance if you disable the global common subexpression
> elimination pass by adding -fno-gcse to the command line." It would be
> interesting to benchmark this with parrot, as the cg and cgp runcores
> work by computed gotos. But, gcse fails on the cgp core because it's
> too complicated anyway so it may not matter. Anything for that
> hundredth of a second, right?

The counter to that is that if one can arrange for the compiler to do as
many (legitimate) yak shaving optimisations as possible, it frees the
programmer's time up to increase functionality (or find better algorithms).

Nicholas Clark

Reply all
Reply to author
Forward
0 new messages