Profile of /usr/local/lib/perl5/5.10.1/if.pm

← Index
NYTProf Performance Profile «block view•line view•sub view»
For 01.HTTP.t
Run on Tue May 4 15:25:55 2010
Reported on Tue May 4 15:26:23 2010

File | /usr/local/lib/perl5/5.10.1/if.pm
Statements Executed | 24
Statement Execution Time | 64µs

Subroutines — ordered by exclusive time
Calls | P | F | Exclusive Time | Inclusive Time | Subroutine
--- | --- | --- | --- | --- | ---
2 | 1 | 1 | 33µs | 42µs | if::::workif::work
2 | 2 | 1 | 7µs | 7µs | if::::importif::import
2 | 1 | 2 | 6µs | 6µs | if::::CORE:substif::CORE:subst (opcode)
0 | 0 | 0 | 0s | 0s | if::::unimportif::unimport

Call graph for these subroutines as a Graphviz dot language file.

Line | State ments | Time on line | Calls | Time in subs | Code
--- | --- | --- | --- | --- | ---
1 |  |  |  |  | package if;
2 |  |  |  |  |
3 | 1 | 500ns |  |  | $VERSION = '0.05';
4 |  |  |  |  |
5 |  |  |  |  | # spent 42µs (33+9) within if::work which was called 2 times, avg 21µs/call: # 2 times (33µs+9µs) by Moose::Object::BEGIN@12 or Moose::Object::BEGIN@13 at line 18, avg 21µs/call sub work {
6 | 2 | 1µs |  |  | my $method = shift() ? 'import' : 'unimport';
7 | 2 | 700ns |  |  | die "Too few arguments to `use if' (some code returning an empty list in list context?)"
8 |  |  |  |  | unless @_ >= 2;
9 | 2 | 200ns |  |  | return unless shift; # CONDITION
10 |  |  |  |  |
11 | 2 | 500ns |  |  | my $p = $_[0]; # PACKAGE
12 | 2 | 12µs | 2 | 6µs | (my $file = "$p.pm") =~ s!::!/!g; # spent 6µs making 2 calls to if::CORE:subst, avg 3µs/call
13 | 2 | 1µs |  |  | require $file; # Works even if $_[0] is a keyword (like open)
14 | 2 | 22µs | 2 | 3µs | my $m = $p->can($method); # spent 3µs making 2 calls to UNIVERSAL::can, avg 2µs/call
15 | 2 | 8µs | 1 | 1.09ms | goto &$m if $m; # spent 1.09ms making 1 call to metaclass::import
16 |  |  |  |  | }
17 |  |  |  |  |
18 | 6 | 14µs | 2 | 42µs | # spent 7µs within if::import which was called 2 times, avg 3µs/call: # once (4µs+0s) by Moose::Object::BEGIN@12 at line 12 of Moose/Object.pm # once (3µs+0s) by Moose::Object::BEGIN@13 at line 13 of Moose/Object.pm sub import { shift; unshift @_, 1; goto &work } # spent 42µs making 2 calls to if::work, avg 21µs/call
19 |  |  |  |  | sub unimport { shift; unshift @_, 0; goto &work }
20 |  |  |  |  |
21 | 1 | 3µs |  |  | 1;
22 |  |  |  |  | __END__
23 |  |  |  |  |
24 |  |  |  |  | =head1 NAME
25 |  |  |  |  |
26 |  |  |  |  | if - C<use> a Perl module if a condition holds
27 |  |  |  |  |
28 |  |  |  |  | =head1 SYNOPSIS
29 |  |  |  |  |
30 |  |  |  |  | use if CONDITION, MODULE => ARGUMENTS;
31 |  |  |  |  |
32 |  |  |  |  | =head1 DESCRIPTION
33 |  |  |  |  |
34 |  |  |  |  | The construct
35 |  |  |  |  |
36 |  |  |  |  | use if CONDITION, MODULE => ARGUMENTS;
37 |  |  |  |  |
38 |  |  |  |  | has no effect unless C<CONDITION> is true. In this case the effect is
39 |  |  |  |  | the same as of
40 |  |  |  |  |
41 |  |  |  |  | use MODULE ARGUMENTS;
42 |  |  |  |  |
43 |  |  |  |  | Above C<< => >> provides necessary quoting of C<MODULE>. If not used (e.g.,
44 |  |  |  |  | no ARGUMENTS to give), you'd better quote C<MODULE> yourselves.
45 |  |  |  |  |
46 |  |  |  |  | =head1 BUGS
47 |  |  |  |  |
48 |  |  |  |  | The current implementation does not allow specification of the
49 |  |  |  |  | required version of the module.
50 |  |  |  |  |
51 |  |  |  |  | =head1 AUTHOR
52 |  |  |  |  |
53 |  |  |  |  | Ilya Zakharevich L<mailto:perl-module-if@ilyaz.org>.
54 |  |  |  |  |
55 |  |  |  |  | =cut
56 |  |  |  |  |
|  |  |  |  | # spent 6µs within if::CORE:subst which was called 2 times, avg 3µs/call: # 2 times (6µs+0s) by if::work at line 12 of if.pm, avg 3µs/call sub if::CORE:subst; # xsub