Beefy Boxes and Bandwidth Generously Provided by pair Networks
The stupid question is the question not asked
 
PerlMonks  

Re^2: new keyword "size" to avoid scalar trap ? ( scalar @array != scalar(LIST) )

by LanX (Canon)
on Dec 07, 2012 at 17:28 UTC ( #1007802=note: print w/ replies, xml ) Need Help??


in reply to Re: new keyword "size" to avoid scalar trap ? ( scalar @array != scalar(LIST) )
in thread new keyword "size" to avoid scalar trap ? ( scalar @array != scalar(LIST) )

I care less about the name than the functionality, could be also "count" or whatever suits.

I suppose "elems" is already known from ruby or perl6? So why not.¹

But² tobyinks and your suggestion w/o prototypes is considerably slower on large arrays.

DB<106> use Time::HiRes qw(time) DB<107> sub elems { scalar @_ } DB<108> @a=(1..1e6);0 DB<109> $t=time; $count = scalar @a; print time-$t 7.10487365722656e-05 DB<110> $t=time; $count = elems @a; print time-$t 0.0554749965667725

Perl 5.10!

Cheers Rolf

¹) Well the plural in "elems" somehow indicates a list to be returned.

²) as already said


Comment on Re^2: new keyword "size" to avoid scalar trap ? ( scalar @array != scalar(LIST) )
Download Code
Re^3: new keyword "size" to avoid scalar trap ? ( scalar @array != scalar(LIST) )
by Laurent_R (Parson) on Dec 08, 2012 at 15:46 UTC

    It is most probably the copying of the argument list (the full array) in the function call that takes this time difference.

    Passing a reference to the array would probably solve the issue, but the syntax would become less obvious to use.

      No copying takes place :) however the same amount of scalars is aliased ;)
      Thats why we need prototypes or a special C-implementaton.

      according to the perlsub sub size (+;@) { } could be used, to call

       size @array

      or

       size 1,2,3

      but since I'm using 5.10, I can't test it...

      Cheers Rolf

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others taking refuge in the Monastery: (8)
As of 2014-10-24 11:31 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    For retirement, I am banking on:










    Results (131 votes), past polls