CUFP
shmem
<p>Sometimes I want to know the amount of memory a Module takes.</p>
<code>
package MemImpact;
use vars qw($before $after $now);
BEGIN {
$before = `ps -o vsz= -p $$`;
}
$now = $before;
printf "%-40s % 10d kB\n", "initial memory:" , $before;
sub import {
my $pack = shift;
for (@_) {
eval "use $_;";
die "Can't load $_:\n$@\n" if $@;
$after = `ps -o vsz= -p $$`;
printf "%-40s % 10d kB\n", "after loading $_:" , $after;
printf "%-40s % 10d kB\n", "impact of $_:" , $after - $now;
$now = $after;
}
}
END { printf "%-40s % 10d kB\n", "total impact:" , $after - $before; }
1;
</code>
<p>Usage example:</p>
<c>
perl -MMemImpact=Moose,MooseX::AttributeHelpers -e 1
</c>
<p>or</p>
<c>
#!/usr/bin/perl
use MemImpact qw(Moose);
use MemImpact qw(MooseX::AttributeHelpers);
</c>
<c>
initial memory: 7576 kB
after loading Moose: 13408 kB
impact of Moose: 5832 kB
after loading MooseX::AttributeHelpers: 14848 kB
impact of MooseX::AttributeHelpers: 1440 kB
total impact: 7272 kB
</c>