use strict; use Data::Dumper; use Devel::Peek; use B::Deparse; use B::Concise; use Devel::Size qw(size total_size); sub big { my (@nodes, @device); foreach (@nodes) { my $tdev = parse_node($_); push (@device, $tdev) if defined($tdev); } } sub medium { my (@nodes, @device); foreach (@nodes) { push (@device, parse_node($_)) if defined(parse_node($_)); } } sub small { my (@nodes, @device, $result); foreach (@nodes) { push (@device, $result) if defined($result = parse_node($_)); } } sub smallx { my (@nodes, @device, $result); foreach (@nodes) { defined($result = parse_node($_)) ? push (@device, $result): 0; } } sub notsmall { my (@nodes, @device); foreach (@nodes) { push (@device, $_) if defined($_ = parse_node($_)); } } foreach (\&big, \&medium, \&small, \&smallx, \¬small) {DumpStats($_);} sub DumpStats { my $deparse = B::Deparse->new(); print $deparse->coderef2text($_[0]); print "\n\n".size($_[0])."\n\n"; my $walker = B::Concise::compile('-src','-exec',$_[0]); $walker->(); }