← Index
NYTProf Performance Profile   « line view »
For ../prof.pl
  Run on Wed Dec 14 15:33:55 2022
Reported on Wed Dec 14 15:40:04 2022

Filename/Users/ether/perl5/perlbrew/perls/36.0/lib/5.36.0/Module/Load.pm
StatementsExecuted 38 statements in 1.72ms
Subroutines
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
1111.26ms1.54msModule::Load::::_loadModule::Load::_load
11166µs70µsModule::Load::::BEGIN@3Module::Load::BEGIN@3
11139µs44µsModule::Load::::BEGIN@14Module::Load::BEGIN@14
11123µs39µsModule::Load::::_to_fileModule::Load::_to_file
11112µs18µsModule::Load::::BEGIN@89Module::Load::BEGIN@89
11111µs33µsModule::Load::::BEGIN@4Module::Load::BEGIN@4
1118µs10µsModule::Load::::_is_fileModule::Load::_is_file
1114µs4µsModule::Load::::_whoModule::Load::_who
1113µs3µsModule::Load::::BEGIN@5Module::Load::BEGIN@5
2112µs2µsModule::Load::::CORE:matchModule::Load::CORE:match (opcode)
1112µs2µsModule::Load::::loadModule::Load::load
0000s0sModule::Load::::autoloadModule::Load::autoload
0000s0sModule::Load::::autoload_remoteModule::Load::autoload_remote
0000s0sModule::Load::::importModule::Load::import
0000s0sModule::Load::::load_remoteModule::Load::load_remote
Call graph for these subroutines as a Graphviz dot language file.
Line State
ments
Time
on line
Calls Time
in subs
Code
1package Module::Load;
2
3250µs274µs
# spent 70µs (66+4) within Module::Load::BEGIN@3 which was called: # once (66µs+4µs) by YAML::PP::Schema::BEGIN@5 at line 3
use strict;
# spent 70µs making 1 call to Module::Load::BEGIN@3 # spent 4µs making 1 call to strict::import
4223µs255µs
# spent 33µs (11+22) within Module::Load::BEGIN@4 which was called: # once (11µs+22µs) by YAML::PP::Schema::BEGIN@5 at line 4
use warnings;
# spent 33µs making 1 call to Module::Load::BEGIN@4 # spent 22µs making 1 call to warnings::import
5276µs13µs
# spent 3µs within Module::Load::BEGIN@5 which was called: # once (3µs+0s) by YAML::PP::Schema::BEGIN@5 at line 5
use File::Spec ();
# spent 3µs making 1 call to Module::Load::BEGIN@5
6
711µsour $VERSION = '0.36';
8
9
10sub import {
11 my $who = _who();
12 my $h; shift;
13
142353µs249µs
# spent 44µs (39+5) within Module::Load::BEGIN@14 which was called: # once (39µs+5µs) by YAML::PP::Schema::BEGIN@5 at line 14
{ no strict 'refs';
# spent 44µs making 1 call to Module::Load::BEGIN@14 # spent 5µs making 1 call to strict::unimport
15
16 @_ or (
17 *{"${who}::load"} = \&load, # compat to prev version
18 *{"${who}::autoload"} = \&autoload,
19 return
20 );
21
22 map { $h->{$_} = () if defined $_ } @_;
23
24 (exists $h->{none} or exists $h->{''})
25 and shift, last;
26
27 ((exists $h->{autoload} and shift,1) or (exists $h->{all} and shift))
28 and *{"${who}::autoload"} = \&autoload;
29
30 ((exists $h->{load} and shift,1) or exists $h->{all})
31 and *{"${who}::load"} = \&load;
32
33 ((exists $h->{load_remote} and shift,1) or exists $h->{all})
34 and *{"${who}::load_remote"} = \&load_remote;
35
36 ((exists $h->{autoload_remote} and shift,1) or exists $h->{all})
37 and *{"${who}::autoload_remote"} = \&autoload_remote;
38
39 }
40
41}
42
43
# spent 2µs within Module::Load::load which was called: # once (2µs+0s) by YAML::PP::Schema::load_subschemas at line 139 of YAML/PP/Schema.pm
sub load(*;@){
4416µs11.54ms goto &_load;
# spent 1.54ms making 1 call to Module::Load::_load
45}
46
47sub autoload(*;@){
48 unshift @_, 'autoimport';
49 goto &_load;
50}
51
52sub load_remote($$;@){
53 my ($dst, $src, @exp) = @_;
54
55 eval "package $dst;Module::Load::load('$src', qw/@exp/);";
56 $@ && die "$@";
57}
58
59sub autoload_remote($$;@){
60 my ($dst, $src, @exp) = @_;
61
62 eval "package $dst;Module::Load::autoload('$src', qw/@exp/);";
63 $@ && die "$@";
64}
65
66
# spent 1.54ms (1.26+273µs) within Module::Load::_load which was called: # once (1.26ms+273µs) by YAML::PP::Schema::load_subschemas at line 44
sub _load{
6711µs my $autoimport = $_[0] eq 'autoimport' and shift;
6811µs my $mod = shift or return;
6912µs14µs my $who = _who();
# spent 4µs making 1 call to Module::Load::_who
70
7112µs110µs if( _is_file( $mod ) ) {
# spent 10µs making 1 call to Module::Load::_is_file
72 require $mod;
73 } else {
74 LOAD: {
7520s my $err;
7611µs for my $flag ( qw[1 0] ) {
7711µs139µs my $file = _to_file( $mod, $flag);
# spent 39µs making 1 call to Module::Load::_to_file
782551µs eval { require $file };
7911µs $@ ? $err .= $@ : last LOAD;
80 }
81 die $err if $err;
82 }
83 }
84
85 ### This addresses #41883: Module::Load cannot import
86 ### non-Exporter module. ->import() routines weren't
87 ### properly called when load() was used.
88
893584µs224µs
# spent 18µs (12+6) within Module::Load::BEGIN@89 which was called: # once (12µs+6µs) by YAML::PP::Schema::BEGIN@5 at line 89
{ no strict 'refs';
# spent 18µs making 1 call to Module::Load::BEGIN@89 # spent 6µs making 1 call to strict::unimport
9010s my $import;
91
9211µs ((@_ or $autoimport) and (
93 $import = $mod->can('import')
94 ) and (
95 unshift(@_, $mod),
96 goto &$import
97 )
98 );
99 }
100
101}
102
103
# spent 39µs (23+16) within Module::Load::_to_file which was called: # once (23µs+16µs) by Module::Load::_load at line 77
sub _to_file{
10410s local $_ = shift;
10511µs my $pm = shift || '';
106
107 ## trailing blanks ignored by default. [rt #69886]
10817µs my @parts = split /::|'/, $_, -1;
109 ## make sure that we can't hop out of @INC
11011µs shift @parts if @parts && !$parts[0];
111
112 ### because of [perl #19213], see caveats ###
113125µs423µs my $file = $^O eq 'MSWin32'
# spent 16µs making 1 call to File::Spec::Unix::catfile # spent 5µs making 1 call to File::Spec::Unix::catdir # spent 2µs making 2 calls to File::Spec::Unix::canonpath, avg 1µs/call
114 ? join "/", @parts
115 : File::Spec->catfile( @parts );
116
11711µs $file .= '.pm' if $pm;
118
119 ### on perl's before 5.10 (5.9.5@31746) if you require
120 ### a file in VMS format, it's stored in %INC in VMS
121 ### format. Therefor, better unixify it first
122 ### Patch in reply to John Malmbergs patch (as mentioned
123 ### above) on p5p Tue 21 Aug 2007 04:55:07
12411µs $file = VMS::Filespec::unixify($file) if $^O eq 'VMS';
125
12615µs return $file;
127}
128
12917µs
# spent 4µs within Module::Load::_who which was called: # once (4µs+0s) by Module::Load::_load at line 69
sub _who { (caller(1))[0] }
130
131
# spent 10µs (8+2) within Module::Load::_is_file which was called: # once (8µs+2µs) by Module::Load::_load at line 71
sub _is_file {
13211µs local $_ = shift;
133112µs22µs return /^\./ ? 1 :
# spent 2µs making 2 calls to Module::Load::CORE:match, avg 1µs/call
134 /[^\w:']/ ? 1 :
135 undef
136}
137
- -
14014µs1;
141
142__END__
 
# spent 2µs within Module::Load::CORE:match which was called 2 times, avg 1µs/call: # 2 times (2µs+0s) by Module::Load::_is_file at line 133, avg 1µs/call
sub Module::Load::CORE:match; # opcode