> >> After I sent this I had a flash of enlightenment:
> >>    $max = (sort {$a <=> $b} @_)[-1];
> >> May be slower, though, I don't know.
> >
> > How many times have I seen this?  I mean, I've seen
> > this construct many times, and the question deserves
> > a place in the Perl FAQ.
> 
> How to find the min/max value of an array is certainly a FAQ, so it
> should be put in the official Perl FAQ.  How does someone recommend
> this?

perldoc perlfaq
"How to contribute to this document" ;-)

> I couldn't find the benchmark discussion from a few months ago, so
> I tested the various suggestions already mentioned on the list.  I
> used the following max functions:
> 
> [Snip code and benchmarks]
>
> I'm a litttle puzzled as to why max2 (foreach with if modifier) is
> consistently about 25% faster than max4 (foreach with ternary operator).
> My guess is that the difference is due to how often the assignment is
> done.  With the if modifier, the assignment is done only when necessary;
> with the ternary operator, the assignment is done for every element of
> the array (most of the time uselessly assigning $max = $max).
> 

Useless assignment in Perl is costly, like any language.  Perl also has to
do reference counting that means it takes a few extra cycles.  A more fair
experiment is to benchmark if/else vs. ternary operator where each condition
does the same thing... they should match, otherwise somebody hasn't optimised
it correctly.

Jonathan Paton

Jonathan Paton

__________________________________________________
Do You Yahoo!?
Everything you'll ever need on one web page
from News and Sport to Email and Music Charts
http://uk.my.yahoo.com

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to