Beefy Boxes and Bandwidth Generously Provided by pair Networks
more useful options
 
PerlMonks  

Re: assigning the maximum of two numbers

by GrandFather (Saint)
on Nov 02, 2005 at 23:19 UTC ( [id://505177]=note: print w/replies, xml ) Need Help??


in reply to assigning the maximum of two numbers

Just addressing the two value case, ignoring the less interesting techniques, but considering inline and sub versions of the ternary technique I get the following:

use strict; use warnings; use List::Util qw(max); use Benchmark qw(cmpthese); sub ternary { $_[0] > $_[1] ? $_[0] : $_[1]; } sub sauoq { ($_[0], $_[1])[$_[0] < $_[1]]; } sub List { max (@_); } my @r = map {int rand 1000}(0..1); cmpthese -1,{ 'ternary' => sub {$r[0] > $r[1] ? $r[0] : $r[1]}, 'ternarySub' => sub {ternary(@r)}, 'sauoq' => sub {($r[0], $r[1])[$r[0] < $r[1]]}, 'sauoqSub' => sub {sauoq(@r)}, 'List' => sub {List(@r)}, };

Prints:

Rate List sauoqSub ternarySub sauoq te +rnary List 998323/s -- -10% -36% -75% + -86% sauoqSub 1106591/s 11% -- -29% -73% + -85% ternarySub 1550115/s 55% 40% -- -62% + -79% sauoq 4044842/s 305% 266% 161% -- + -44% ternary 7270647/s 628% 557% 369% 80% + --

Update: added sauoq's technique


Perl is Huffman encoded by design.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://505177]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others drinking their drinks and smoking their pipes about the Monastery: (3)
As of 2024-04-25 04:53 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found