Sometimes I want to know the amount of memory a Module takes.
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;
Usage example:
perl -MMemImpact=Moose,MooseX::AttributeHelpers -e 1
or
#!/usr/bin/perl use MemImpact qw(Moose); use MemImpact qw(MooseX::AttributeHelpers);
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
In reply to memory usage of modules by shmem
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |