← Index
NYTProf Performance Profile   « block view • line view • sub view »
For 05.Domain_and_Item.t
  Run on Tue May 4 17:21:41 2010
Reported on Tue May 4 17:22:20 2010

File /usr/local/lib/perl5/5.10.1/darwin-2level/IO/Socket/INET.pm
Statements Executed 664
Statement Execution Time 108ms
Subroutines — ordered by exclusive time
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
1112.39ms6.47msIO::Socket::INET::::BEGIN@11IO::Socket::INET::BEGIN@11
4111562µs1.38msIO::Socket::INET::::peeraddrIO::Socket::INET::peeraddr
4111503µs2.07msIO::Socket::INET::::peerhostIO::Socket::INET::peerhost
4111445µs762µsIO::Socket::INET::::peerportIO::Socket::INET::peerport
211201µs181msIO::Socket::INET::::configureIO::Socket::INET::configure
42169µs91µsIO::Socket::INET::::_sock_infoIO::Socket::INET::_sock_info
21166µs105msIO::Socket::INET::::_get_addrIO::Socket::INET::_get_addr
21137µs75.6msIO::Socket::INET::::connectIO::Socket::INET::connect
21131µs181msIO::Socket::INET::::newIO::Socket::INET::new
11128µs802µsIO::Socket::INET::::BEGIN@12IO::Socket::INET::BEGIN@12
11115µs18µsIO::Socket::INET::::BEGIN@9IO::Socket::INET::BEGIN@9
83211µs11µsIO::Socket::INET::::CORE:matchIO::Socket::INET::CORE:match (opcode)
2119µs9µsIO::Socket::INET::::_get_proto_numberIO::Socket::INET::_get_proto_number
1118µs37µsIO::Socket::INET::::BEGIN@13IO::Socket::INET::BEGIN@13
2118µs8µsIO::Socket::INET::::_get_proto_nameIO::Socket::INET::_get_proto_name
1117µs20µsIO::Socket::INET::::BEGIN@14IO::Socket::INET::BEGIN@14
1117µs19µsIO::Socket::INET::::BEGIN@15IO::Socket::INET::BEGIN@15
4222µs2µsIO::Socket::INET::::CORE:substIO::Socket::INET::CORE:subst (opcode)
0000s0sIO::Socket::INET::::_cache_protoIO::Socket::INET::_cache_proto
0000s0sIO::Socket::INET::::_errorIO::Socket::INET::_error
0000s0sIO::Socket::INET::::bindIO::Socket::INET::bind
0000s0sIO::Socket::INET::::sockaddrIO::Socket::INET::sockaddr
0000s0sIO::Socket::INET::::sockhostIO::Socket::INET::sockhost
0000s0sIO::Socket::INET::::sockportIO::Socket::INET::sockport
Call graph for these subroutines as a Graphviz dot language file.
Line State
ments
Time
on line
Calls Time
in subs
Code
1# IO::Socket::INET.pm
2#
3# Copyright (c) 1997-8 Graham Barr <gbarr@pobox.com>. All rights reserved.
4# This program is free software; you can redistribute it and/or
5# modify it under the same terms as Perl itself.
6
7package IO::Socket::INET;
8
9331µs221µs
# spent 18µs (15+3) within IO::Socket::INET::BEGIN@9 which was called # once (15µs+3µs) by LWP::Protocol::implementor at line 9
use strict;
# spent 18µs making 1 call to IO::Socket::INET::BEGIN@9 # spent 3µs making 1 call to strict::import
101400nsour(@ISA, $VERSION);
113121µs27.13ms
# spent 6.47ms (2.39+4.08) within IO::Socket::INET::BEGIN@11 which was called # once (2.39ms+4.08ms) by LWP::Protocol::implementor at line 11
use IO::Socket;
# spent 6.47ms making 1 call to IO::Socket::INET::BEGIN@11 # spent 659µs making 1 call to IO::Socket::import
12325µs21.58ms
# spent 802µs (28+774) within IO::Socket::INET::BEGIN@12 which was called # once (28µs+774µs) by LWP::Protocol::implementor at line 12
use Socket;
# spent 802µs making 1 call to IO::Socket::INET::BEGIN@12 # spent 774µs making 1 call to Exporter::import
13325µs267µs
# spent 37µs (8+29) within IO::Socket::INET::BEGIN@13 which was called # once (8µs+29µs) by LWP::Protocol::implementor at line 13
use Carp;
# spent 37µs making 1 call to IO::Socket::INET::BEGIN@13 # spent 29µs making 1 call to Exporter::import
14320µs233µs
# spent 20µs (7+13) within IO::Socket::INET::BEGIN@14 which was called # once (7µs+13µs) by LWP::Protocol::implementor at line 14
use Exporter;
# spent 20µs making 1 call to IO::Socket::INET::BEGIN@14 # spent 13µs making 1 call to Exporter::import
1531.24ms230µs
# spent 19µs (7+12) within IO::Socket::INET::BEGIN@15 which was called # once (7µs+12µs) by LWP::Protocol::implementor at line 15
use Errno;
# spent 19µs making 1 call to IO::Socket::INET::BEGIN@15 # spent 12µs making 1 call to Exporter::import
16
1718µs@ISA = qw(IO::Socket);
181400ns$VERSION = "1.31";
19
201700nsmy $EINVAL = exists(&Errno::EINVAL) ? Errno::EINVAL() : 1;
21
2219µs13µsIO::Socket::INET->register_domain( AF_INET );
# spent 3µs making 1 call to IO::Socket::register_domain
23
2411µsmy %socket_type = ( tcp => SOCK_STREAM,
25 udp => SOCK_DGRAM,
26 icmp => SOCK_RAW
27 );
281100nsmy %proto_number;
291700ns$proto_number{tcp} = Socket::IPPROTO_TCP() if defined &Socket::IPPROTO_TCP;
301200ns$proto_number{udp} = Socket::IPPROTO_UDP() if defined &Socket::IPPROTO_UDP;
311200ns$proto_number{icmp} = Socket::IPPROTO_ICMP() if defined &Socket::IPPROTO_ICMP;
3214µsmy %proto_name = reverse %proto_number;
33
34
# spent 181ms (31µs+181) within IO::Socket::INET::new which was called 2 times, avg 90.7ms/call: # 2 times (31µs+181ms) by Net::HTTP::new at line 19 of Net/HTTP.pm, avg 90.7ms/call
sub new {
35635µs my $class = shift;
36 unshift(@_, "PeerAddr") if @_ == 1;
37 return $class->SUPER::new(@_);
# spent 181ms making 2 calls to IO::Socket::new, avg 90.7ms/call
38}
39
40sub _cache_proto {
41 my @proto = @_;
42 for (map lc($_), $proto[0], split(' ', $proto[1])) {
43 $proto_number{$_} = $proto[2];
44 }
45 $proto_name{$proto[2]} = $proto[0];
46}
47
48
# spent 9µs within IO::Socket::INET::_get_proto_number which was called 2 times, avg 5µs/call: # 2 times (9µs+0s) by IO::Socket::INET::_sock_info at line 81, avg 5µs/call
sub _get_proto_number {
49611µs my $name = lc(shift);
50 return undef unless defined $name;
51 return $proto_number{$name} if exists $proto_number{$name};
52
53 my @proto = getprotobyname($name);
54 return undef unless @proto;
55 _cache_proto(@proto);
56
57 return $proto[2];
58}
59
60
# spent 8µs within IO::Socket::INET::_get_proto_name which was called 2 times, avg 4µs/call: # 2 times (8µs+0s) by IO::Socket::INET::configure at line 168, avg 4µs/call
sub _get_proto_name {
6169µs my $num = shift;
62 return undef unless defined $num;
63 return $proto_name{$num} if exists $proto_name{$num};
64
65 my @proto = getprotobynumber($num);
66 return undef unless @proto;
67 _cache_proto(@proto);
68
69 return $proto[0];
70}
71
72
# spent 91µs (69+22) within IO::Socket::INET::_sock_info which was called 4 times, avg 23µs/call: # 2 times (38µs+9µs) by IO::Socket::INET::configure at line 160, avg 23µs/call # 2 times (31µs+13µs) by IO::Socket::INET::configure at line 145, avg 22µs/call
sub _sock_info {
734680µs my($addr,$port,$proto) = @_;
74 my $origport = $port;
75 my @serv = ();
76
77 $port = $1
# spent 1µs making 2 calls to IO::Socket::INET::CORE:subst, avg 550ns/call
78 if(defined $addr && $addr =~ s,:([\w\(\)/]+)$,,);
79
80 if(defined $proto && $proto =~ /\D/) {
# spent 5µs making 4 calls to IO::Socket::INET::CORE:match, avg 1µs/call
81 my $num = _get_proto_number($proto);
# spent 9µs making 2 calls to IO::Socket::INET::_get_proto_number, avg 5µs/call
82 unless (defined $num) {
83 $@ = "Bad protocol '$proto'";
84 return;
85 }
86 $proto = $num;
87 }
88
89 if(defined $port) {
90 my $defport = ($port =~ s,\((\d+)\)$,,) ? $1 : undef;
# spent 400ns making 2 calls to IO::Socket::INET::CORE:subst, avg 200ns/call
91 my $pnum = ($port =~ m,^(\d+)$,)[0];
# spent 6µs making 2 calls to IO::Socket::INET::CORE:match, avg 3µs/call
92
93 @serv = getservbyname($port, _get_proto_name($proto) || "")
# spent 700ns making 2 calls to IO::Socket::INET::CORE:match, avg 350ns/call
94 if ($port =~ m,\D,);
95
96 $port = $serv[2] || $defport || $pnum;
97 unless (defined $port) {
98 $@ = "Bad service '$origport'";
99 return;
100 }
101
102 $proto = _get_proto_number($serv[3]) if @serv && !$proto;
103 }
104
105 return ($addr || undef,
106 $port || undef,
107 $proto || undef
108 );
109}
110
111sub _error {
112 my $sock = shift;
113 my $err = shift;
114 {
115 local($!);
116 my $title = ref($sock).": ";
117 $@ = join("", $_[0] =~ /^$title/ ? "" : $title, @_);
118 $sock->close()
119 if(defined fileno($sock));
120 }
121 $! = $err;
122 return undef;
123}
124
125
# spent 105ms (66µs+105) within IO::Socket::INET::_get_addr which was called 2 times, avg 52.4ms/call: # 2 times (66µs+105ms) by IO::Socket::INET::configure at line 173, avg 52.4ms/call
sub _get_addr {
12612105ms my($sock,$addr_str, $multi) = @_;
127 my @addr;
128 if ($multi && $addr_str !~ /^\d+(?:\.\d+){3}$/) {
129 (undef, undef, undef, undef, @addr) = gethostbyname($addr_str);
130 } else {
131 my $h = inet_aton($addr_str);
# spent 105ms making 2 calls to Socket::inet_aton, avg 52.3ms/call
132 push(@addr, $h) if defined $h;
133 }
134 @addr;
135}
136
137
# spent 181ms (201µs+181) within IO::Socket::INET::configure which was called 2 times, avg 90.4ms/call: # 2 times (201µs+181ms) by Net::HTTP::http_connect at line 29 of Net/HTTP.pm, avg 90.4ms/call
sub configure {
13860192µs my($sock,$arg) = @_;
139 my($lport,$rport,$laddr,$raddr,$proto,$type);
140
141
142 $arg->{LocalAddr} = $arg->{LocalHost}
143 if exists $arg->{LocalHost} && !exists $arg->{LocalAddr};
144
145 ($laddr,$lport,$proto) = _sock_info($arg->{LocalAddr},
# spent 44µs making 2 calls to IO::Socket::INET::_sock_info, avg 22µs/call
146 $arg->{LocalPort},
147 $arg->{Proto})
148 or return _error($sock, $!, $@);
149
150 $laddr = defined $laddr ? inet_aton($laddr)
151 : INADDR_ANY;
152
153 return _error($sock, $EINVAL, "Bad hostname '",$arg->{LocalAddr},"'")
154 unless(defined $laddr);
155
156 $arg->{PeerAddr} = $arg->{PeerHost}
157 if exists $arg->{PeerHost} && !exists $arg->{PeerAddr};
158
159 unless(exists $arg->{Listen}) {
160 ($raddr,$rport,$proto) = _sock_info($arg->{PeerAddr},
# spent 47µs making 2 calls to IO::Socket::INET::_sock_info, avg 23µs/call
161 $arg->{PeerPort},
162 $proto)
163 or return _error($sock, $!, $@);
164 }
165
166 $proto ||= _get_proto_number('tcp');
167
168 $type = $arg->{Type} || $socket_type{lc _get_proto_name($proto)};
# spent 8µs making 2 calls to IO::Socket::INET::_get_proto_name, avg 4µs/call
169
170 my @raddr = ();
171
172 if(defined $raddr) {
173 @raddr = $sock->_get_addr($raddr, $arg->{MultiHomed});
# spent 105ms making 2 calls to IO::Socket::INET::_get_addr, avg 52.4ms/call
174 return _error($sock, $EINVAL, "Bad hostname '",$arg->{PeerAddr},"'")
175 unless @raddr;
176 }
177
178 while(1) {
179
180 $sock->socket(AF_INET, $type, $proto) or
# spent 121µs making 2 calls to IO::Socket::socket, avg 61µs/call
181 return _error($sock, $!, "$!");
182
183 if (defined $arg->{Blocking}) {
184 defined $sock->blocking($arg->{Blocking})
185 or return _error($sock, $!, "$!");
186 }
187
188 if ($arg->{Reuse} || $arg->{ReuseAddr}) {
189 $sock->sockopt(SO_REUSEADDR,1) or
190 return _error($sock, $!, "$!");
191 }
192
193 if ($arg->{ReusePort}) {
194 $sock->sockopt(SO_REUSEPORT,1) or
195 return _error($sock, $!, "$!");
196 }
197
198 if ($arg->{Broadcast}) {
199 $sock->sockopt(SO_BROADCAST,1) or
200 return _error($sock, $!, "$!");
201 }
202
203 if($lport || ($laddr ne INADDR_ANY) || exists $arg->{Listen}) {
204 $sock->bind($lport || 0, $laddr) or
205 return _error($sock, $!, "$!");
206 }
207
208 if(exists $arg->{Listen}) {
209 $sock->listen($arg->{Listen} || 5) or
210 return _error($sock, $!, "$!");
211 last;
212 }
213
214 # don't try to connect unless we're given a PeerAddr
215 last unless exists($arg->{PeerAddr});
216
217 $raddr = shift @raddr;
218
219 return _error($sock, $EINVAL, 'Cannot determine remote port')
220 unless($rport || $type == SOCK_DGRAM || $type == SOCK_RAW);
221
222 last
223 unless($type == SOCK_STREAM || defined $raddr);
224
225 return _error($sock, $EINVAL, "Bad hostname '",$arg->{PeerAddr},"'")
226 unless defined $raddr;
227
228# my $timeout = ${*$sock}{'io_socket_timeout'};
229# my $before = time() if $timeout;
230
231 undef $@;
232 if ($sock->connect(pack_sockaddr_in($rport, $raddr))) {
# spent 75.6ms making 2 calls to IO::Socket::INET::connect, avg 37.8ms/call # spent 12µs making 2 calls to Socket::pack_sockaddr_in, avg 6µs/call
233# ${*$sock}{'io_socket_timeout'} = $timeout;
234 return $sock;
235 }
236
237 return _error($sock, $!, $@ || "Timeout")
238 unless @raddr;
239
240# if ($timeout) {
241# my $new_timeout = $timeout - (time() - $before);
242# return _error($sock,
243# (exists(&Errno::ETIMEDOUT) ? Errno::ETIMEDOUT() : $EINVAL),
244# "Timeout") if $new_timeout <= 0;
245# ${*$sock}{'io_socket_timeout'} = $new_timeout;
246# }
247
248 }
249
250 $sock;
251}
252
253
# spent 75.6ms (37µs+75.6) within IO::Socket::INET::connect which was called 2 times, avg 37.8ms/call: # 2 times (37µs+75.6ms) by IO::Socket::INET::configure at line 232, avg 37.8ms/call
sub connect {
254636µs @_ == 2 || @_ == 3 or
255 croak 'usage: $sock->connect(NAME) or $sock->connect(PORT, ADDR)';
256 my $sock = shift;
257 return $sock->SUPER::connect(@_ == 1 ? shift : pack_sockaddr_in(@_));
# spent 75.6ms making 2 calls to IO::Socket::connect, avg 37.8ms/call
258}
259
260sub bind {
261 @_ == 2 || @_ == 3 or
262 croak 'usage: $sock->bind(NAME) or $sock->bind(PORT, ADDR)';
263 my $sock = shift;
264 return $sock->SUPER::bind(@_ == 1 ? shift : pack_sockaddr_in(@_))
265}
266
267sub sockaddr {
268 @_ == 1 or croak 'usage: $sock->sockaddr()';
269 my($sock) = @_;
270 my $name = $sock->sockname;
271 $name ? (sockaddr_in($name))[1] : undef;
272}
273
274sub sockport {
275 @_ == 1 or croak 'usage: $sock->sockport()';
276 my($sock) = @_;
277 my $name = $sock->sockname;
278 $name ? (sockaddr_in($name))[0] : undef;
279}
280
281sub sockhost {
282 @_ == 1 or croak 'usage: $sock->sockhost()';
283 my($sock) = @_;
284 my $addr = $sock->sockaddr;
285 $addr ? inet_ntoa($addr) : undef;
286}
287
288
# spent 1.38ms (562µs+821µs) within IO::Socket::INET::peeraddr which was called 41 times, avg 34µs/call: # 41 times (562µs+821µs) by IO::Socket::INET::peerhost at line 305, avg 34µs/call
sub peeraddr {
289164554µs @_ == 1 or croak 'usage: $sock->peeraddr()';
290 my($sock) = @_;
291 my $name = $sock->peername;
# spent 290µs making 41 calls to IO::Socket::peername, avg 7µs/call
292 $name ? (sockaddr_in($name))[1] : undef;
# spent 532µs making 41 calls to Socket::sockaddr_in, avg 13µs/call
293}
294
295
# spent 762µs (445+316) within IO::Socket::INET::peerport which was called 41 times, avg 19µs/call: # 41 times (445µs+316µs) by LWP::Protocol::http::_get_sock_info at line 77 of LWP/Protocol/http.pm, avg 19µs/call
sub peerport {
296164340µs @_ == 1 or croak 'usage: $sock->peerport()';
297 my($sock) = @_;
298 my $name = $sock->peername;
# spent 91µs making 41 calls to IO::Socket::peername, avg 2µs/call
299 $name ? (sockaddr_in($name))[0] : undef;
# spent 225µs making 41 calls to Socket::sockaddr_in, avg 6µs/call
300}
301
302
# spent 2.07ms (503µs+1.57) within IO::Socket::INET::peerhost which was called 41 times, avg 51µs/call: # 41 times (503µs+1.57ms) by LWP::Protocol::http::_get_sock_info at line 77 of LWP/Protocol/http.pm, avg 51µs/call
sub peerhost {
303164653µs @_ == 1 or croak 'usage: $sock->peerhost()';
304 my($sock) = @_;
305 my $addr = $sock->peeraddr;
# spent 1.38ms making 41 calls to IO::Socket::INET::peeraddr, avg 34µs/call
306 $addr ? inet_ntoa($addr) : undef;
# spent 187µs making 41 calls to Socket::inet_ntoa, avg 5µs/call
307}
308
309117µs1;
310
311__END__
312
313=head1 NAME
314
315IO::Socket::INET - Object interface for AF_INET domain sockets
316
317=head1 SYNOPSIS
318
319 use IO::Socket::INET;
320
321=head1 DESCRIPTION
322
323C<IO::Socket::INET> provides an object interface to creating and using sockets
324in the AF_INET domain. It is built upon the L<IO::Socket> interface and
325inherits all the methods defined by L<IO::Socket>.
326
327=head1 CONSTRUCTOR
328
329=over 4
330
331=item new ( [ARGS] )
332
333Creates an C<IO::Socket::INET> object, which is a reference to a
334newly created symbol (see the C<Symbol> package). C<new>
335optionally takes arguments, these arguments are in key-value pairs.
336
337In addition to the key-value pairs accepted by L<IO::Socket>,
338C<IO::Socket::INET> provides.
339
340
341 PeerAddr Remote host address <hostname>[:<port>]
342 PeerHost Synonym for PeerAddr
343 PeerPort Remote port or service <service>[(<no>)] | <no>
344 LocalAddr Local host bind address hostname[:port]
345 LocalHost Synonym for LocalAddr
346 LocalPort Local host bind port <service>[(<no>)] | <no>
347 Proto Protocol name (or number) "tcp" | "udp" | ...
348 Type Socket type SOCK_STREAM | SOCK_DGRAM | ...
349 Listen Queue size for listen
350 ReuseAddr Set SO_REUSEADDR before binding
351 Reuse Set SO_REUSEADDR before binding (deprecated, prefer ReuseAddr)
352 ReusePort Set SO_REUSEPORT before binding
353 Broadcast Set SO_BROADCAST before binding
354 Timeout Timeout value for various operations
355 MultiHomed Try all addresses for multi-homed hosts
356 Blocking Determine if connection will be blocking mode
357
358If C<Listen> is defined then a listen socket is created, else if the
359socket type, which is derived from the protocol, is SOCK_STREAM then
360connect() is called.
361
362Although it is not illegal, the use of C<MultiHomed> on a socket
363which is in non-blocking mode is of little use. This is because the
364first connect will never fail with a timeout as the connect call
365will not block.
366
367The C<PeerAddr> can be a hostname or the IP-address on the
368"xx.xx.xx.xx" form. The C<PeerPort> can be a number or a symbolic
369service name. The service name might be followed by a number in
370parenthesis which is used if the service is not known by the system.
371The C<PeerPort> specification can also be embedded in the C<PeerAddr>
372by preceding it with a ":".
373
374If C<Proto> is not given and you specify a symbolic C<PeerPort> port,
375then the constructor will try to derive C<Proto> from the service
376name. As a last resort C<Proto> "tcp" is assumed. The C<Type>
377parameter will be deduced from C<Proto> if not specified.
378
379If the constructor is only passed a single argument, it is assumed to
380be a C<PeerAddr> specification.
381
382If C<Blocking> is set to 0, the connection will be in nonblocking mode.
383If not specified it defaults to 1 (blocking mode).
384
385Examples:
386
387 $sock = IO::Socket::INET->new(PeerAddr => 'www.perl.org',
388 PeerPort => 'http(80)',
389 Proto => 'tcp');
390
391 $sock = IO::Socket::INET->new(PeerAddr => 'localhost:smtp(25)');
392
393 $sock = IO::Socket::INET->new(Listen => 5,
394 LocalAddr => 'localhost',
395 LocalPort => 9000,
396 Proto => 'tcp');
397
398 $sock = IO::Socket::INET->new('127.0.0.1:25');
399
400 $sock = IO::Socket::INET->new(PeerPort => 9999,
401 PeerAddr => inet_ntoa(INADDR_BROADCAST),
402 Proto => udp,
403 LocalAddr => 'localhost',
404 Broadcast => 1 )
405 or die "Can't bind : $@\n";
406
407 NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE
408
409As of VERSION 1.18 all IO::Socket objects have autoflush turned on
410by default. This was not the case with earlier releases.
411
412 NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE
413
414=back
415
416=head2 METHODS
417
418=over 4
419
420=item sockaddr ()
421
422Return the address part of the sockaddr structure for the socket
423
424=item sockport ()
425
426Return the port number that the socket is using on the local host
427
428=item sockhost ()
429
430Return the address part of the sockaddr structure for the socket in a
431text form xx.xx.xx.xx
432
433=item peeraddr ()
434
435Return the address part of the sockaddr structure for the socket on
436the peer host
437
438=item peerport ()
439
440Return the port number for the socket on the peer host.
441
442=item peerhost ()
443
444Return the address part of the sockaddr structure for the socket on the
445peer host in a text form xx.xx.xx.xx
446
447=back
448
449=head1 SEE ALSO
450
451L<Socket>, L<IO::Socket>
452
453=head1 AUTHOR
454
455Graham Barr. Currently maintained by the Perl Porters. Please report all
456bugs to <perl5-porters@perl.org>.
457
458=head1 COPYRIGHT
459
460Copyright (c) 1996-8 Graham Barr <gbarr@pobox.com>. All rights reserved.
461This program is free software; you can redistribute it and/or
462modify it under the same terms as Perl itself.
463
464=cut
# spent 11µs within IO::Socket::INET::CORE:match which was called 8 times, avg 1µs/call: # 4 times (5µs+0s) by IO::Socket::INET::_sock_info at line 80 of IO/Socket/INET.pm, avg 1µs/call # 2 times (6µs+0s) by IO::Socket::INET::_sock_info at line 91 of IO/Socket/INET.pm, avg 3µs/call # 2 times (700ns+0s) by IO::Socket::INET::_sock_info at line 93 of IO/Socket/INET.pm, avg 350ns/call
sub IO::Socket::INET::CORE:match; # xsub
# spent 2µs within IO::Socket::INET::CORE:subst which was called 4 times, avg 375ns/call: # 2 times (1µs+0s) by IO::Socket::INET::_sock_info at line 77 of IO/Socket/INET.pm, avg 550ns/call # 2 times (400ns+0s) by IO::Socket::INET::_sock_info at line 90 of IO/Socket/INET.pm, avg 200ns/call
sub IO::Socket::INET::CORE:subst; # xsub