Slash Boxes
NOTE: use Perl; is on undef hiatus. You can read content, but you can't post it. More info will be forthcoming forthcomingly.

All the Perl that's Practical to Extract and Report

use Perl Log In

Log In

[ Create a new account ]

Journal of nicholas (3034)

Saturday December 17, 2005
06:29 PM

ouch! [or how to save lots of memory with only a pair of ()]

[ #28040 ]

Ouch! I started with this:

$ perl -MDevel::Size=total_size -le 'use POSIX; print total_size (\%POSIX::)'
$ perl -MDevel::Size=total_size -le 'use POSIX(); print total_size(\%POSIX::)'

and then found that things got "better". (Although I think that I will be corrected somewhat on the closure comment)

One thought about what this means is that anything running with ithreads is likely to spawn threads faster if it avoids as much importing as it can. So go check your use statements in your mod_perl programs.

The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
More | Login | Reply
Loading... please wait.
  • Since POSIX throws things in other places too, you've got to look at the (very) big picture:

    perl -MDevel::Size=total_size -le 'use POSIX; print total_size(\%::)'
    perl -MDevel::Size=total_size -le 'use POSIX(); print total_size(\%::)'

    You're not saving 300K, you're saving 500K...
  • Although when *forking*, you're typically sharing all the memory that isn't touched by the child processes.

    So if you run mod_perl the old fashioned (and IMO still: better) way, consider loading all of POSIX upfront. This will improve runtime of the first script (per Apache child!) that needs something out of POSIX, and memory use, as you now load everything only once instead of parts duplicately.

    As always: the way you use code is important for the way you should write it. A good rule of thumb is to always e