Beefy Boxes and Bandwidth Generously Provided by pair Networks vroom
XP is just a number
 
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 romping around the Monastery: (7)
As of 2014-04-19 03:41 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    April first is:







    Results (477 votes), past polls