Profiling
Dirk Koopman
djk at tobit.co.uk
Wed Jan 4 22:12:20 CET 2012
Any suggestions for profiling large perl programs that use AnyEvent?
Profile stops thusly:
djk at dirk6:~/spider/perl$ perl -d:Profile ./cluster.pl
cluster
DXSpider V1.56, build 0.16 (git: fb8e4bc) started
Copyright (c) 1998-2012 Dirk Koopman G1TLH
loading prefixes ...
US Database not loaded
loading band data ...
loading user file system ...
Use of uninitialized value $c[1] in concatenation (.) or string at
/usr/share/perl5/Devel/Profile.pm line 123.
Use of uninitialized value in concatenation (.) or string at
/usr/share/perl5/Devel/Profile.pm line 123.
Use of uninitialized value $c[1] in concatenation (.) or string at
/usr/share/perl5/Devel/Profile.pm line 123.
at /usr/share/perl5/Devel/Profile.pm line 123
Use of uninitialized value $c[1] in concatenation (.) or string at
/usr/share/perl5/Devel/Profile.pm line 123.
Use of uninitialized value in concatenation (.) or string at
/usr/share/perl5/Devel/Profile.pm line 123.
Use of uninitialized value in concatenation (.) or string at
/usr/share/perl5/Devel/Profile.pm line 123.
at /usr/share/perl5/Devel/Profile.pm line 123
starting listeners ...
Unable to create sub named "" at /usr/local/lib/perl/5.12.4/AnyEvent.pm
line 1521.
at /usr/local/lib/perl/5.12.4/AnyEvent.pm line 1521
AnyEvent::__ANON__[/usr/local/lib/perl/5.12.4/AnyEvent.pm:1522]('AnyEvent', 'fh', 'GLOB(0xad46a14)', 'poll', 'r', 'cb', 'CODE(0xad468ac)') called at (eval 3)[/usr/local/lib/perl/5.12.4/AnyEvent.pm:1557] line 6
AE::io('GLOB(0xad46a14)', 0, 'CODE(0xad468ac)') called at
/usr/local/lib/perl/5.12.4/AnyEvent/Socket.pm line 1196
AnyEvent::Socket::tcp_server('::1', 27754, 'CODE(0xad46d84)',
'CODE(0xad4694c)') called at /spider/perl/Msg.pm line 319
Msg::new_server('IntMsg', '::1', 27754, 'CODE(0xac2df60)') called at
./cluster.pl line 462
Unable to create sub named "" at /usr/local/lib/perl/5.12.4/AnyEvent.pm
line 1521.
The offending code is:
sub new_server {
@_ == 4 || die "Msg->new_server (myhost, myport, login_proc)\n";
my ($pkg, $my_host, $my_port, $login_proc) = @_;
my $self = $pkg->new($login_proc);
$self->{sock} = tcp_server $my_host, $my_port, sub {
$self->new_client(@_); };
die "Could not create socket: $! \n" unless $self->{sock};
return $self;
}
which is slightly better than DProf which does:
perl -d:DProf ./cluster.pl
cluster
DXSpider V1.56, build 0.16 (git: fb8e4bc) started
Copyright (c) 1998-2012 Dirk Koopman G1TLH
loading prefixes ...
US Database not loaded
loading band data ...
loading user file system ...
starting listeners ...
Segmentation fault
Neither yield a cigar...
Dirk
More information about the anyevent
mailing list