Beefy Boxes and Bandwidth Generously Provided by pair Networks
There's more than one way to do things
 
PerlMonks  

Re: Converting to boolean

by diotalevi (Canon)
on Jun 17, 2004 at 03:41 UTC ( #367520=note: print w/ replies, xml ) Need Help??


in reply to Converting to boolean

An update ... though stuff like '=' assignments make this entirely less than obvious. Check these stats out.

use Devel::Size 'total_size'; $ARY[ $_ ] = ? for 1 .. 1_000_000; print total_size( \ @ARY ) . "\n"; # Do this as a comparison of a sparse array $ARY_B[ 1_000_000 ] = 1; print total_size( \ @ARY_B );
CodeSize
sparse4,000,072
undef16,194,340
120,195,340
\ undef20,194,352
\ !120,194,377
\ !!120,194,378
\ 120,195,340
( 1 + $| )24,194,340
\ ( 1 + $| )40,194,340
!141,194,340
!!142,194,340

I use !! $x because the return value is one of the values PL_sv_yes or PL_sv_no both of which are a single scalar that is shared through the entire process, forever. It is somewhat like undef being shared everywhere. You can have a million return values from !! $x and have them take up no space or you can have a million 1's and every one takes up a whole SV's worth of memory.

The choice is obvious.


Comment on Re: Converting to boolean
Select or Download Code

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others meditating upon the Monastery: (10)
As of 2015-07-07 23:21 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (93 votes), past polls