B::TerseSize - Printing info about ops and their (estimated) size
perl -MO=TerseSize[,OPTIONS] foo.pl
The B::Size and B::TerseSize modules attempt to measure the size of Perl op codes. The output of B::TerseSize is similar to that of B::Terse, but includes the size of each OP in the tree and the PADLIST (subroutine lexical variables). The module can be run just as other compiler backends or used via Apache::Status (version 2.02 and higher).
If the Apache::Status StatusTerseSize option is enabled, there will be a main menu item added, "Memory Usage". Clicking on this link will cause B::TerseSize to produce a summary of package memory usage. This summary can take quite a while to produce, as each package subroutine syntax tree will be walked, adding up the information. This information will be cached, so running httpd in -X (non-forking mode) is a good choice.
When browsing the Apache::Status "Symbol Table Dump", a "Memory Usage" link will be at the bottom of each page. These summaries also include measurements of package global variables.
The Apache::Status symbol table browser will also provide an option to dump a subroutine tree along with the other subroutine options.
The memory measurements are only an estimate. But, chances are, if a measurement is not accurate, it is smaller than the actual size.
The "execution order" option under Apache::Status can only be run once unless you are using Perl 5.6.0+ or apply the patches/b_clearsym_60.pat to older Perls.
Doug MacEachern based in part on B::Terse by Malcolm Beattie