← Index
NYTProf Performance Profile   « block view • line view • sub view »
For -e
  Run on Wed Nov 17 22:00:36 2010
Reported on Wed Nov 17 22:13:13 2010

Filename/home/doy/coding/src/Moose/blib/lib//Moose/Exporter.pm
StatementsExecuted 26049 statements in 259ms
Subroutines
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
1371153.2ms414msMoose::Exporter::::__ANON__[:125]Moose::Exporter::__ANON__[:125]
6641135.8ms69.2msMoose::Exporter::::__ANON__[:329]Moose::Exporter::__ANON__[:329]
1371358831.5ms2.64sMoose::Exporter::::__ANON__[:456]Moose::Exporter::__ANON__[:456]
6641124.6ms24.6msMoose::Exporter::::_late_curry_wrapperMoose::Exporter::_late_curry_wrapper
341122.5ms22.9msMoose::Exporter::::_remove_keywordsMoose::Exporter::_remove_keywords
42115.44ms925msMoose::Exporter::::__ANON__[:643]Moose::Exporter::__ANON__[:643]
137115.39ms7.84msMoose::Exporter::::_strip_traitsMoose::Exporter::_strip_traits
534114.48ms4.48msMoose::Exporter::::__ANON__[:259]Moose::Exporter::__ANON__[:259]
137114.25ms5.78msMoose::Exporter::::_strip_meta_nameMoose::Exporter::_strip_meta_name
137114.23ms5.78msMoose::Exporter::::_strip_metaclassMoose::Exporter::_strip_metaclass
7113.62ms6.93msMoose::Exporter::::_make_sub_exporter_paramsMoose::Exporter::_make_sub_exporter_params
167113.58ms9.87msMoose::Exporter::::__ANON__[:321]Moose::Exporter::__ANON__[:321]
1113.46ms4.44msMoose::Exporter::::BEGIN@13Moose::Exporter::BEGIN@13
50112.26ms4.64msMoose::Exporter::::__ANON__[:307]Moose::Exporter::__ANON__[:307]
7112.11ms30.0msMoose::Exporter::::build_import_methodsMoose::Exporter::build_import_methods
137112.06ms2.06msMoose::Exporter::::_get_callerMoose::Exporter::_get_caller
66311.90ms1.90msMoose::Exporter::::_sub_from_packageMoose::Exporter::_sub_from_package
50111.64ms1.67msMoose::Exporter::::_curry_wrapperMoose::Exporter::_curry_wrapper
3434331.60ms24.5msMoose::Exporter::::__ANON__[:557]Moose::Exporter::__ANON__[:557]
163111.13ms1.13msMoose::Exporter::::_flag_as_reexportMoose::Exporter::_flag_as_reexport (xsub)
711747µs747µsMoose::Exporter::::_make_init_metaMoose::Exporter::_make_init_meta
2511681µs681µsMoose::Exporter::::_make_wrapped_subMoose::Exporter::_make_wrapped_sub
1611480µs480µsMoose::Exporter::::_make_wrapped_sub_with_metaMoose::Exporter::_make_wrapped_sub_with_meta
6611423µs423µsMoose::Exporter::::_export_is_flaggedMoose::Exporter::_export_is_flagged (xsub)
711391µs15.0msMoose::Exporter::::_make_exporterMoose::Exporter::_make_exporter
777388µs30.4msMoose::Exporter::::setup_import_methodsMoose::Exporter::setup_import_methods
711384µs616µsMoose::Exporter::::_follow_alsoMoose::Exporter::_follow_also
777365µs970µsMoose::Exporter::::importMoose::Exporter::import
711297µs297µsMoose::Exporter::::_make_import_subMoose::Exporter::_make_import_sub
711212µs212µsMoose::Exporter::::_make_unimport_subMoose::Exporter::_make_unimport_sub
711200µs200µsMoose::Exporter::::_parse_trait_aliasesMoose::Exporter::_parse_trait_aliases
711143µs143µsMoose::Exporter::::_follow_also_realMoose::Exporter::_follow_also_real
11174µs755µsMoose::Exporter::::BEGIN@15Moose::Exporter::BEGIN@15
11163µs80µsMoose::Exporter::::BEGIN@3Moose::Exporter::BEGIN@3
11153µs146µsMoose::Exporter::::BEGIN@567Moose::Exporter::BEGIN@567
11145µs120µsMoose::Exporter::::BEGIN@120Moose::Exporter::BEGIN@120
11144µs118µsMoose::Exporter::::BEGIN@272Moose::Exporter::BEGIN@272
11143µs208µsMoose::Exporter::::BEGIN@14Moose::Exporter::BEGIN@14
11141µs204µsMoose::Exporter::::BEGIN@16Moose::Exporter::BEGIN@16
11140µs40µsMoose::Exporter::::BEGIN@11Moose::Exporter::BEGIN@11
11140µs227µsMoose::Exporter::::BEGIN@12Moose::Exporter::BEGIN@12
11140µs100µsMoose::Exporter::::BEGIN@577Moose::Exporter::BEGIN@577
11139µs105µsMoose::Exporter::::BEGIN@4Moose::Exporter::BEGIN@4
11139µs104µsMoose::Exporter::::BEGIN@121Moose::Exporter::BEGIN@121
11124µs24µsMoose::Exporter::::BEGIN@18Moose::Exporter::BEGIN@18
0000s0sMoose::Exporter::::__ANON__[:189]Moose::Exporter::__ANON__[:189]
0000s0sMoose::Exporter::::__ANON__[:338]Moose::Exporter::__ANON__[:338]
0000s0sMoose::Exporter::::__ANON__[:360]Moose::Exporter::__ANON__[:360]
0000s0sMoose::Exporter::::__ANON__[:460]Moose::Exporter::__ANON__[:460]
0000s0sMoose::Exporter::::__ANON__[:474]Moose::Exporter::__ANON__[:474]
0000s0sMoose::Exporter::::__ANON__[:486]Moose::Exporter::__ANON__[:486]
0000s0sMoose::Exporter::::_apply_meta_traitsMoose::Exporter::_apply_meta_traits
Call graph for these subroutines as a Graphviz dot language file.
Line State
ments
Time
on line
Calls Time
in subs
Code
1package Moose::Exporter;
2
3397µs296µs
# spent 80µs (63+17) within Moose::Exporter::BEGIN@3 which was called: # once (63µs+17µs) by Moose::BEGIN@15 at line 3
use strict;
# spent 80µs making 1 call to Moose::Exporter::BEGIN@3 # spent 17µs making 1 call to strict::import
43230µs2170µs
# spent 105µs (39+66) within Moose::Exporter::BEGIN@4 which was called: # once (39µs+66µs) by Moose::BEGIN@15 at line 4
use warnings;
# spent 105µs making 1 call to Moose::Exporter::BEGIN@4 # spent 66µs making 1 call to warnings::import
5
615µsour $VERSION = '1.19';
712µsour $XS_VERSION = $VERSION;
8169µs$VERSION = eval $VERSION;
# spent 11µs executing statements in string eval
913µsour $AUTHORITY = 'cpan:STEVAN';
10
113122µs140µs
# spent 40µs within Moose::Exporter::BEGIN@11 which was called: # once (40µs+0s) by Moose::BEGIN@15 at line 11
use Class::MOP;
# spent 40µs making 1 call to Moose::Exporter::BEGIN@11
123101µs2414µs
# spent 227µs (40+187) within Moose::Exporter::BEGIN@12 which was called: # once (40µs+187µs) by Moose::BEGIN@15 at line 12
use List::MoreUtils qw( first_index uniq );
# spent 227µs making 1 call to Moose::Exporter::BEGIN@12 # spent 187µs making 1 call to Exporter::import
133544µs14.44ms
# spent 4.44ms (3.46+986µs) within Moose::Exporter::BEGIN@13 which was called: # once (3.46ms+986µs) by Moose::BEGIN@15 at line 13
use Moose::Util::MetaRole;
# spent 4.44ms making 1 call to Moose::Exporter::BEGIN@13
143109µs2373µs
# spent 208µs (43+165) within Moose::Exporter::BEGIN@14 which was called: # once (43µs+165µs) by Moose::BEGIN@15 at line 14
use Scalar::Util qw(reftype);
# spent 208µs making 1 call to Moose::Exporter::BEGIN@14 # spent 165µs making 1 call to Exporter::import
153260µs31.44ms
# spent 755µs (74+681) within Moose::Exporter::BEGIN@15 which was called: # once (74µs+681µs) by Moose::BEGIN@15 at line 15
use Sub::Exporter 0.980;
# spent 755µs making 1 call to Moose::Exporter::BEGIN@15 # spent 624µs making 1 call to Sub::Exporter::__ANON__[Sub/Exporter.pm:756] # spent 57µs making 1 call to UNIVERSAL::VERSION
163106µs2368µs
# spent 204µs (41+163) within Moose::Exporter::BEGIN@16 which was called: # once (41µs+163µs) by Moose::BEGIN@15 at line 16
use Sub::Name qw(subname);
# spent 204µs making 1 call to Moose::Exporter::BEGIN@16 # spent 163µs making 1 call to Exporter::import
17
1831.54ms124µs
# spent 24µs within Moose::Exporter::BEGIN@18 which was called: # once (24µs+0s) by Moose::BEGIN@15 at line 18
use XSLoader;
# spent 24µs making 1 call to Moose::Exporter::BEGIN@18
19
201234µs1203µsXSLoader::load( 'Moose', $XS_VERSION );
# spent 203µs making 1 call to XSLoader::load
21
2212µsmy %EXPORT_SPEC;
23
24
# spent 30.4ms (388µs+30.0) within Moose::Exporter::setup_import_methods which was called 7 times, avg 4.35ms/call: # once (61µs+7.14ms) by MooseX::SemiAffordanceAccessor::Role::Attribute::BEGIN@9 at line 88 of Moose/Role.pm # once (56µs+5.42ms) by Markdent::Role::Event::BEGIN@10 at line 13 of MooseX/Role/Parameterized.pm # once (60µs+5.31ms) by Moose::Meta::Attribute::BEGIN@20 at line 42 of Moose/Util/TypeConstraints.pm # once (56µs+4.29ms) by MooseX::Types::BEGIN@2 at line 122 of Moose.pm # once (51µs+4.01ms) by MooseX::Types::BEGIN@15 at line 68 of MooseX/Types/CheckedUtilExports.pm # once (53µs+1.98ms) by Markdent::Event::StartDocument::BEGIN@11 at line 15 of MooseX/StrictConstructor.pm # once (50µs+1.88ms) by Markdent::Handler::HTMLStream::Document::BEGIN@13 at line 14 of MooseX/SemiAffordanceAccessor.pm
sub setup_import_methods {
25770µs my ( $class, %args ) = @_;
26
27762µs my $exporting_package = $args{exporting_package} ||= caller();
28
297268µs730.0ms $class->build_import_methods(
# spent 30.0ms making 7 calls to Moose::Exporter::build_import_methods, avg 4.29ms/call
30 %args,
31 install => [qw(import unimport init_meta)]
32 );
33}
34
35
# spent 30.0ms (2.11+27.9) within Moose::Exporter::build_import_methods which was called 7 times, avg 4.29ms/call: # 7 times (2.11ms+27.9ms) by Moose::Exporter::setup_import_methods at line 29, avg 4.29ms/call
sub build_import_methods {
36766µs my ( $class, %args ) = @_;
37
38727µs my $exporting_package = $args{exporting_package} ||= caller();
39
40736µs $EXPORT_SPEC{$exporting_package} = \%args;
41
42791µs7616µs my @exports_from = $class->_follow_also($exporting_package);
# spent 616µs making 7 calls to Moose::Exporter::_follow_also, avg 88µs/call
43
44726µs my $export_recorder = {};
45718µs my $is_reexport = {};
46
477125µs76.93ms my $exports = $class->_make_sub_exporter_params(
# spent 6.93ms making 7 calls to Moose::Exporter::_make_sub_exporter_params, avg 989µs/call
48 [ @exports_from, $exporting_package ],
49 $export_recorder,
50 $is_reexport,
51 );
52
537176µs715.0ms my $exporter = $class->_make_exporter($exports, $is_reexport);
# spent 15.0ms making 7 calls to Moose::Exporter::_make_exporter, avg 2.14ms/call
54
55716µs my %methods;
567141µs7297µs $methods{import} = $class->_make_import_sub(
# spent 297µs making 7 calls to Moose::Exporter::_make_import_sub, avg 42µs/call
57 $exporting_package,
58 $exporter,
59 \@exports_from,
60 $is_reexport
61 );
62
637114µs7212µs $methods{unimport} = $class->_make_unimport_sub(
# spent 212µs making 7 calls to Moose::Exporter::_make_unimport_sub, avg 30µs/call
64 $exporting_package,
65 $exports,
66 $export_recorder,
67 $is_reexport
68 );
69
707133µs7747µs $methods{init_meta} = $class->_make_init_meta(
# spent 747µs making 7 calls to Moose::Exporter::_make_init_meta, avg 107µs/call
71 $exporting_package,
72 \%args
73 );
74
757121µs71.29ms my $package = Class::MOP::Package->initialize($exporting_package);
# spent 1.29ms making 7 calls to Class::MOP::Package::initialize, avg 184µs/call
76779µs for my $to_install ( @{ $args{install} || [] } ) {
772183µs my $symbol = '&' . $to_install;
78 next
7921249µs161.45ms unless $methods{$to_install}
# spent 1.45ms making 16 calls to Class::MOP::Package::has_package_symbol, avg 91µs/call
80 && !$package->has_package_symbol($symbol);
8116261µs161.43ms $package->add_package_symbol( $symbol, $methods{$to_install} );
# spent 1.43ms making 16 calls to Class::MOP::Package::add_package_symbol, avg 89µs/call
82 }
83
847151µs return ( $methods{import}, $methods{unimport}, $methods{init_meta} );
85}
86
87
# spent 15.0ms (391µs+14.6) within Moose::Exporter::_make_exporter which was called 7 times, avg 2.14ms/call: # 7 times (391µs+14.6ms) by Moose::Exporter::build_import_methods at line 53, avg 2.14ms/call
sub _make_exporter {
88735µs my ($class, $exports, $is_reexport) = @_;
89
90 return Sub::Exporter::build_exporter(
91 {
92 exports => $exports,
93 groups => { default => [':all'] },
94
# spent 414ms (53.2+361) within Moose::Exporter::__ANON__[/home/doy/coding/src/Moose/blib/lib//Moose/Exporter.pm:125] which was called 137 times, avg 3.02ms/call: # 137 times (53.2ms+361ms) by Sub::Exporter::_do_import at line 799 of Sub/Exporter.pm, avg 3.02ms/call
installer => sub {
95137495µs my ($arg, $to_export) = @_;
961371.71ms1375.03ms my $meta = Class::MOP::class_of($arg->{into});
# spent 5.03ms making 137 calls to Class::MOP::class_of, avg 37µs/call
97
98137406µs722.9ms goto &Sub::Exporter::default_installer unless $meta;
# spent 22.9ms making 7 calls to Sub::Exporter::default_installer, avg 3.27ms/call
99
100 # don't overwrite existing symbols with our magically flagged
101 # version of it if we would install the same sub that's already
102 # in the importer
103
104130269µs my @filtered_to_export;
105130245µs my %installed;
1061306.51ms for (my $i = 0; $i < @{ $to_export }; $i += 2) {
10711575.31ms my ($as, $cv) = @{ $to_export }[$i, $i + 1];
108
109115715.0ms116071.3ms next if !ref($as)
# spent 71.1ms making 1157 calls to Class::MOP::Package::has_package_symbol, avg 61µs/call # spent 179µs making 3 calls to Class::MOP::Package::get_package_symbol, avg 60µs/call
110 && $meta->has_package_symbol('&' . $as)
111 && $meta->get_package_symbol('&' . $as) == $cv;
112
11311544.59ms push @filtered_to_export, $as, $cv;
11411546.41ms $installed{$as} = 1 unless ref $as;
115130308µs }
116
1171301.58ms130283ms Sub::Exporter::default_installer($arg, \@filtered_to_export);
# spent 283ms making 130 calls to Sub::Exporter::default_installer, avg 2.18ms/call
118
1191303.59ms for my $name ( keys %{$is_reexport} ) {
1203108µs2196µs
# spent 120µs (45+75) within Moose::Exporter::BEGIN@120 which was called: # once (45µs+75µs) by Moose::BEGIN@15 at line 120
no strict 'refs';
# spent 120µs making 1 call to Moose::Exporter::BEGIN@120 # spent 75µs making 1 call to strict::unimport
12132.51ms2170µs
# spent 104µs (39+66) within Moose::Exporter::BEGIN@121 which was called: # once (39µs+66µs) by Moose::BEGIN@15 at line 121
no warnings 'once';
# spent 104µs making 1 call to Moose::Exporter::BEGIN@121 # spent 66µs making 1 call to warnings::unimport
122166516µs next unless exists $installed{$name};
1231635.03ms1631.13ms _flag_as_reexport( \*{ join q{::}, $arg->{into}, $name } );
# spent 1.13ms making 163 calls to Moose::Exporter::_flag_as_reexport, avg 7µs/call
124 }
125 },
126 }
1277360µs714.6ms );
# spent 14.6ms making 7 calls to Sub::Exporter::build_exporter, avg 2.08ms/call
128}
129
130{
13129µs my $seen = {};
132
133
# spent 616µs (384+232) within Moose::Exporter::_follow_also which was called 7 times, avg 88µs/call: # 7 times (384µs+232µs) by Moose::Exporter::build_import_methods at line 42, avg 88µs/call
sub _follow_also {
134729µs my $class = shift;
135721µs my $exporting_package = shift;
136
137757µs local %$seen = ( $exporting_package => 1 );
138
1397298µs14232µs return uniq( _follow_also_real($exporting_package) );
# spent 143µs making 7 calls to Moose::Exporter::_follow_also_real, avg 20µs/call # spent 89µs making 7 calls to List::MoreUtils::uniq, avg 13µs/call
140 }
141
142
# spent 143µs within Moose::Exporter::_follow_also_real which was called 7 times, avg 20µs/call: # 7 times (143µs+0s) by Moose::Exporter::_follow_also at line 139, avg 20µs/call
sub _follow_also_real {
143723µs my $exporting_package = shift;
144
145726µs if ( !exists $EXPORT_SPEC{$exporting_package} ) {
146 my $loaded = Class::MOP::is_class_loaded($exporting_package);
147
148 die "Package in also ($exporting_package) does not seem to "
149 . "use Moose::Exporter"
150 . ( $loaded ? "" : " (is it loaded?)" );
151 }
152
153728µs my $also = $EXPORT_SPEC{$exporting_package}{also};
154
1557152µs return unless defined $also;
156
157 my @also = ref $also ? @{$also} : $also;
158
159 for my $package (@also) {
160 die
161 "Circular reference in 'also' parameter to Moose::Exporter between $exporting_package and $package"
162 if $seen->{$package};
163
164 $seen->{$package} = 1;
165 }
166
167 return @also, map { _follow_also_real($_) } @also;
168 }
169}
170
171
# spent 200µs within Moose::Exporter::_parse_trait_aliases which was called 7 times, avg 29µs/call: # 7 times (200µs+0s) by Moose::Exporter::_make_sub_exporter_params at line 233, avg 29µs/call
sub _parse_trait_aliases {
172726µs my $class = shift;
173746µs my ($package, $aliases) = @_;
174
175714µs my @ret;
176743µs for my $alias (@$aliases) {
177 my $name;
178 if (ref($alias)) {
179 reftype($alias) eq 'ARRAY'
180 or Moose->throw_error(reftype($alias) . " references are not "
181 . "valid arguments to the 'trait_aliases' "
182 . "option");
183
184 ($alias, $name) = @$alias;
185 }
186 else {
187 ($name = $alias) =~ s/.*:://;
188 }
189 push @ret, subname "${package}::${name}" => sub () { $alias };
190 }
191
1927110µs return @ret;
193}
194
195
# spent 6.93ms (3.62+3.30) within Moose::Exporter::_make_sub_exporter_params which was called 7 times, avg 989µs/call: # 7 times (3.62ms+3.30ms) by Moose::Exporter::build_import_methods at line 47, avg 989µs/call
sub _make_sub_exporter_params {
196723µs my $class = shift;
197716µs my $packages = shift;
198714µs my $export_recorder = shift;
199714µs my $is_reexport = shift;
200
201714µs my %exports;
202
203745µs for my $package ( @{$packages} ) {
204722µs my $args = $EXPORT_SPEC{$package}
205 or die "The $package package does not use Moose::Exporter\n";
206
207754µs for my $name ( @{ $args->{with_meta} } ) {
20816198µs16485µs my $sub = $class->_sub_from_package( $package, $name )
# spent 485µs making 16 calls to Moose::Exporter::_sub_from_package, avg 30µs/call
209 or next;
210
2111665µs my $fq_name = $package . '::' . $name;
212
21316303µs16480µs $exports{$name} = $class->_make_wrapped_sub_with_meta(
# spent 480µs making 16 calls to Moose::Exporter::_make_wrapped_sub_with_meta, avg 30µs/call
214 $fq_name,
215 $sub,
216 $export_recorder,
217 );
218 }
219
220753µs for my $name ( @{ $args->{with_caller} } ) {
22125271µs25674µs my $sub = $class->_sub_from_package( $package, $name )
# spent 674µs making 25 calls to Moose::Exporter::_sub_from_package, avg 27µs/call
222 or next;
223
2242588µs my $fq_name = $package . '::' . $name;
225
22625385µs25681µs $exports{$name} = $class->_make_wrapped_sub(
# spent 681µs making 25 calls to Moose::Exporter::_make_wrapped_sub, avg 27µs/call
227 $fq_name,
228 $sub,
229 $export_recorder,
230 );
231 }
232
2337135µs7200µs my @extra_exports = $class->_parse_trait_aliases(
# spent 200µs making 7 calls to Moose::Exporter::_parse_trait_aliases, avg 29µs/call
234 $package, $args->{trait_aliases},
235 );
236795µs for my $name ( @{ $args->{as_is} }, @extra_exports ) {
2372962µs my ( $sub, $coderef_name );
238
23929121µs if ( ref $name ) {
240410µs $sub = $name;
241
24248µs my $coderef_pkg;
2434127µs447µs ( $coderef_pkg, $coderef_name )
# spent 47µs making 4 calls to Class::MOP::get_code_info, avg 12µs/call
244 = Class::MOP::get_code_info($name);
245
246428µs if ( $coderef_pkg ne $package ) {
247 $is_reexport->{$coderef_name} = 1;
248 }
249 }
250 else {
25125296µs25736µs $sub = $class->_sub_from_package( $package, $name )
# spent 736µs making 25 calls to Moose::Exporter::_sub_from_package, avg 29µs/call
252 or next;
253
2542576µs $coderef_name = $name;
255 }
256
25729182µs $export_recorder->{$sub} = 1;
258
2595636.63ms
# spent 4.48ms within Moose::Exporter::__ANON__[/home/doy/coding/src/Moose/blib/lib//Moose/Exporter.pm:259] which was called 534 times, avg 8µs/call: # 534 times (4.48ms+0s) by Sub::Exporter::default_generator at line 856 of Sub/Exporter.pm, avg 8µs/call
$exports{$coderef_name} = sub {$sub};
260 }
261 }
262
2637103µs return \%exports;
264}
265
266
# spent 1.90ms within Moose::Exporter::_sub_from_package which was called 66 times, avg 29µs/call: # 25 times (736µs+0s) by Moose::Exporter::_make_sub_exporter_params at line 251, avg 29µs/call # 25 times (674µs+0s) by Moose::Exporter::_make_sub_exporter_params at line 221, avg 27µs/call # 16 times (485µs+0s) by Moose::Exporter::_make_sub_exporter_params at line 208, avg 30µs/call
sub _sub_from_package {
26766194µs my $sclass = shift;
26866151µs my $package = shift;
26966148µs my $name = shift;
270
27166282µs my $sub = do {
27234.90ms2192µs
# spent 118µs (44+74) within Moose::Exporter::BEGIN@272 which was called: # once (44µs+74µs) by Moose::BEGIN@15 at line 272
no strict 'refs';
# spent 118µs making 1 call to Moose::Exporter::BEGIN@272 # spent 74µs making 1 call to strict::unimport
27366522µs \&{ $package . '::' . $name };
274 };
275
27666862µs return $sub if defined &$sub;
277
278 Carp::cluck "Trying to export undefined sub ${package}::${name}";
279
280 return;
281}
282
28312µsour $CALLER;
284
285
# spent 681µs within Moose::Exporter::_make_wrapped_sub which was called 25 times, avg 27µs/call: # 25 times (681µs+0s) by Moose::Exporter::_make_sub_exporter_params at line 226, avg 27µs/call
sub _make_wrapped_sub {
2862588µs my $self = shift;
2872571µs my $fq_name = shift;
2882554µs my $sub = shift;
2892547µs my $export_recorder = shift;
290
291 # We need to set the package at import time, so that when
292 # package Foo imports has(), we capture "Foo" as the
293 # package. This lets other packages call Foo::has() and get
294 # the right package. This is done for backwards compatibility
295 # with existing production code, not because this is a good
296 # idea ;)
297
# spent 4.64ms (2.26+2.38) within Moose::Exporter::__ANON__[/home/doy/coding/src/Moose/blib/lib//Moose/Exporter.pm:307] which was called 50 times, avg 93µs/call: # 50 times (2.26ms+2.38ms) by Sub::Exporter::default_generator at line 856 of Sub/Exporter.pm, avg 93µs/call
return sub {
29850163µs my $caller = $CALLER;
299
30050496µs501.67ms my $wrapper = $self->_curry_wrapper( $sub, $fq_name, $caller );
# spent 1.67ms making 50 calls to Moose::Exporter::_curry_wrapper, avg 33µs/call
301
302501.28ms50711µs my $sub = subname( $fq_name => $wrapper );
# spent 711µs making 50 calls to Sub::Name::subname, avg 14µs/call
303
30450319µs $export_recorder->{$sub} = 1;
305
30650583µs return $sub;
30725509µs };
308}
309
310
# spent 480µs within Moose::Exporter::_make_wrapped_sub_with_meta which was called 16 times, avg 30µs/call: # 16 times (480µs+0s) by Moose::Exporter::_make_sub_exporter_params at line 213, avg 30µs/call
sub _make_wrapped_sub_with_meta {
3111664µs my $self = shift;
3121657µs my $fq_name = shift;
3131641µs my $sub = shift;
3141638µs my $export_recorder = shift;
315
316
# spent 69.2ms (35.8+33.5) within Moose::Exporter::__ANON__[/home/doy/coding/src/Moose/blib/lib//Moose/Exporter.pm:329] which was called 664 times, avg 104µs/call: # 664 times (35.8ms+33.5ms) by Sub::Exporter::default_generator at line 856 of Sub/Exporter.pm, avg 104µs/call
return sub {
3176641.92ms my $caller = $CALLER;
318
319 my $wrapper = $self->_late_curry_wrapper(
320 $sub, $fq_name,
32183115.9ms83130.9ms
# spent 9.87ms (3.58+6.29) within Moose::Exporter::__ANON__[/home/doy/coding/src/Moose/blib/lib//Moose/Exporter.pm:321] which was called 167 times, avg 59µs/call: # 167 times (3.58ms+6.29ms) by Moose::Role::after or Moose::Role::around or Moose::Role::before or Moose::Role::has or Moose::Role::override or Moose::Role::requires or Moose::Role::with or Moose::around or Moose::extends or Moose::has or Moose::with at line 358, avg 59µs/call
sub { Class::MOP::class_of(shift) } => $caller
# spent 24.6ms making 664 calls to Moose::Exporter::_late_curry_wrapper, avg 37µs/call # spent 6.29ms making 167 calls to Class::MOP::class_of, avg 38µs/call
322 );
323
32466416.4ms6648.84ms my $sub = subname( $fq_name => $wrapper );
# spent 8.84ms making 664 calls to Sub::Name::subname, avg 13µs/call
325
3266644.59ms $export_recorder->{$sub} = 1;
327
3286647.79ms return $sub;
32916380µs };
330}
331
332
# spent 1.67ms (1.64+34µs) within Moose::Exporter::_curry_wrapper which was called 50 times, avg 33µs/call: # 50 times (1.64ms+34µs) by Moose::Exporter::__ANON__[/home/doy/coding/src/Moose/blib/lib//Moose/Exporter.pm:307] at line 300, avg 33µs/call
sub _curry_wrapper {
33350159µs my $class = shift;
33450112µs my $sub = shift;
33550114µs my $fq_name = shift;
33650242µs my @extra = @_;
337
3382824.97ms232181ms my $wrapper = sub { $sub->( @extra, @_ ) };
# spent 158ms making 212 calls to MooseX::Role::Parameterized::method, avg 746µs/call # spent 22.3ms making 1 call to MooseX::Role::Parameterized::parameter # spent 505µs making 17 calls to MooseX::Types::CheckedUtilExports::__ANON__[MooseX/Types/CheckedUtilExports.pm:64], avg 30µs/call # spent 270µs making 2 calls to MooseX::Role::Parameterized::role, avg 135µs/call
33950228µs434µs if ( my $proto = prototype $sub ) {
# spent 34µs making 4 calls to Scalar::Util::set_prototype, avg 8µs/call
340
341 # XXX - Perl's prototype sucks. Use & to make set_prototype
342 # ignore the fact that we're passing "private variables"
343 &Scalar::Util::set_prototype( $wrapper, $proto );
344 }
34550619µs return $wrapper;
346}
347
348
# spent 24.6ms within Moose::Exporter::_late_curry_wrapper which was called 664 times, avg 37µs/call: # 664 times (24.6ms+0s) by Moose::Exporter::__ANON__[/home/doy/coding/src/Moose/blib/lib//Moose/Exporter.pm:329] at line 321, avg 37µs/call
sub _late_curry_wrapper {
3496642.00ms my $class = shift;
3506641.55ms my $sub = shift;
3516641.58ms my $fq_name = shift;
3526641.31ms my $extra = shift;
3536643.21ms my @ex_args = @_;
354
355 my $wrapper = sub {
356
357 # resolve curried arguments at runtime via this closure
3581672.30ms1679.87ms my @curry = ( $extra->(@ex_args) );
# spent 9.87ms making 167 calls to Moose::Exporter::__ANON__[Moose/Exporter.pm:321], avg 59µs/call
3591675.12ms1675.70s return $sub->( @curry, @_ );
# spent 2.58s making 50 calls to Moose::has, avg 51.6ms/call # spent 2.34s making 53 calls to Moose::with, avg 44.1ms/call, recursion: max depth 1, sum of overlapping time 74.7ms # spent 1.13s making 26 calls to Moose::Role::with, avg 43.6ms/call, recursion: max depth 2, sum of overlapping time 309ms # spent 15.2ms making 3 calls to Moose::extends, avg 5.05ms/call # spent 5.70ms making 9 calls to Moose::Role::has, avg 633µs/call # spent 3.08ms making 9 calls to Moose::Role::requires, avg 342µs/call # spent 1.77ms making 8 calls to Moose::Role::around, avg 221µs/call # spent 1.60ms making 1 call to Moose::around # spent 762µs making 3 calls to Moose::Role::override, avg 254µs/call # spent 754µs making 3 calls to Moose::Role::before, avg 251µs/call # spent 455µs making 2 calls to Moose::Role::after, avg 228µs/call
3606647.45ms };
361
3626641.76ms if ( my $proto = prototype $sub ) {
363
364 # XXX - Perl's prototype sucks. Use & to make set_prototype
365 # ignore the fact that we're passing "private variables"
366 &Scalar::Util::set_prototype( $wrapper, $proto );
367 }
3686648.96ms return $wrapper;
369}
370
371
# spent 297µs within Moose::Exporter::_make_import_sub which was called 7 times, avg 42µs/call: # 7 times (297µs+0s) by Moose::Exporter::build_import_methods at line 56, avg 42µs/call
sub _make_import_sub {
372721µs shift;
373732µs my $exporting_package = shift;
374718µs my $exporter = shift;
375716µs my $exports_from = shift;
376717µs my $is_reexport = shift;
377
378
# spent 2.64s (31.5ms+2.61) within Moose::Exporter::__ANON__[/home/doy/coding/src/Moose/blib/lib//Moose/Exporter.pm:456] which was called 137 times, avg 19.3ms/call: # 2 times (383µs+16.0ms) by MooseX::Types::import at line 362 of MooseX/Types.pm, avg 8.18ms/call # 2 times (397µs+13.8ms) by MooseX::Types::import at line 365 of MooseX/Types.pm, avg 7.08ms/call # once (240µs+61.4ms) by Markdent::Event::StartDocument::BEGIN@11 at line 11 of Markdent/Event/StartDocument.pm # once (252µs+38.2ms) by Markdent::Handler::HTMLStream::Document::BEGIN@13 at line 13 of Markdent/Handler/HTMLStream/Document.pm # once (243µs+32.5ms) by Markdent::Handler::HTMLStream::Document::BEGIN@12 at line 12 of Markdent/Handler/HTMLStream/Document.pm # once (224µs+29.4ms) by Markdent::Dialect::Standard::BlockParser::BEGIN@34 at line 34 of Markdent/Dialect/Standard/BlockParser.pm # once (248µs+27.7ms) by Markdent::Event::StartParagraph::BEGIN@11 at line 11 of Markdent/Event/StartParagraph.pm # once (285µs+26.8ms) by Markdent::Parser::BEGIN@17 at line 17 of Markdent/Parser.pm # once (250µs+26.3ms) by Markdent::Event::AutoLink::BEGIN@12 at line 12 of Markdent/Event/AutoLink.pm # once (233µs+26.4ms) by Markdent::Event::StartUnorderedList::BEGIN@10 at line 10 of Markdent/Event/StartUnorderedList.pm # once (225µs+25.0ms) by Markdent::Parser::BEGIN@19 at line 19 of Markdent/Parser.pm # once (232µs+24.2ms) by Markdent::Event::EndEmphasis::BEGIN@13 at line 13 of Markdent/Event/EndEmphasis.pm # once (224µs+23.8ms) by Markdent::Event::StartListItem::BEGIN@11 at line 11 of Markdent/Event/StartListItem.pm # once (226µs+23.7ms) by Markdent::Event::StartCode::BEGIN@13 at line 13 of Markdent/Event/StartCode.pm # once (223µs+23.7ms) by Markdent::Event::EndCode::BEGIN@12 at line 12 of Markdent/Event/EndCode.pm # once (242µs+23.6ms) by MooseX::Types::BEGIN@2 at line 2 of MooseX/Types.pm # once (226µs+23.6ms) by Markdent::Event::StartLink::BEGIN@12 at line 12 of Markdent/Event/StartLink.pm # once (223µs+23.4ms) by Markdent::Dialect::Standard::SpanParser::BEGIN@34 at line 34 of Markdent/Dialect/Standard/SpanParser.pm # once (223µs+23.2ms) by Markdent::Event::EndOrderedList::BEGIN@10 at line 10 of Markdent/Event/EndOrderedList.pm # once (223µs+22.9ms) by Markdent::Event::Image::BEGIN@13 at line 13 of Markdent/Event/Image.pm # once (262µs+22.6ms) by Markdent::Event::EndStrong::BEGIN@12 at line 12 of Markdent/Event/EndStrong.pm # once (245µs+22.4ms) by Markdent::Role::Event::BEGIN@10 at line 10 of Markdent/Role/Event.pm # once (223µs+22.1ms) by Markdent::Event::StartLink::BEGIN@13 at line 13 of Markdent/Event/StartLink.pm # once (224µs+22.1ms) by Markdent::Simple::Document::BEGIN@16 at line 16 of Markdent/Simple/Document.pm # once (222µs+22.1ms) by Markdent::Event::AutoLink::BEGIN@13 at line 13 of Markdent/Event/AutoLink.pm # once (221µs+22.1ms) by Markdent::Event::HTMLCommentBlock::BEGIN@13 at line 13 of Markdent/Event/HTMLCommentBlock.pm # once (227µs+22.0ms) by Markdent::Event::HTMLTag::BEGIN@13 at line 13 of Markdent/Event/HTMLTag.pm # once (292µs+21.9ms) by Markdent::Event::Text::BEGIN@13 at line 13 of Markdent/Event/Text.pm # once (224µs+21.9ms) by Markdent::Event::StartHTMLTag::BEGIN@13 at line 13 of Markdent/Event/StartHTMLTag.pm # once (221µs+21.9ms) by Markdent::Event::HTMLComment::BEGIN@13 at line 13 of Markdent/Event/HTMLComment.pm # once (301µs+21.7ms) by Markdent::Event::StartBlockquote::BEGIN@10 at line 10 of Markdent/Event/StartBlockquote.pm # once (240µs+21.7ms) by Markdent::Simple::Document::BEGIN@15 at line 15 of Markdent/Simple/Document.pm # once (225µs+21.7ms) by Markdent::Event::EndCode::BEGIN@13 at line 13 of Markdent/Event/EndCode.pm # once (235µs+21.7ms) by MooseX::Types::Base::BEGIN@3 at line 3 of MooseX/Types/Base.pm # once (228µs+21.6ms) by Markdent::Event::HTMLCommentBlock::BEGIN@12 at line 12 of Markdent/Event/HTMLCommentBlock.pm # once (223µs+21.6ms) by Markdent::Event::StartStrong::BEGIN@13 at line 13 of Markdent/Event/StartStrong.pm # once (225µs+21.5ms) by Markdent::Event::EndStrong::BEGIN@13 at line 13 of Markdent/Event/EndStrong.pm # once (221µs+21.5ms) by Markdent::Event::StartEmphasis::BEGIN@13 at line 13 of Markdent/Event/StartEmphasis.pm # once (222µs+21.5ms) by Markdent::Event::Preformatted::BEGIN@13 at line 13 of Markdent/Event/Preformatted.pm # once (254µs+21.4ms) by Markdent::Event::HTMLBlock::BEGIN@13 at line 13 of Markdent/Event/HTMLBlock.pm # once (223µs+21.5ms) by Markdent::Event::HTMLEntity::BEGIN@13 at line 13 of Markdent/Event/HTMLEntity.pm # once (221µs+21.4ms) by Markdent::Event::EndHeader::BEGIN@13 at line 13 of Markdent/Event/EndHeader.pm # once (225µs+21.4ms) by Markdent::Dialect::Standard::SpanParser::BEGIN@32 at line 32 of Markdent/Dialect/Standard/SpanParser.pm # once (224µs+21.4ms) by Markdent::Event::Text::BEGIN@12 at line 12 of Markdent/Event/Text.pm # once (222µs+21.4ms) by Markdent::Event::EndHTMLTag::BEGIN@13 at line 13 of Markdent/Event/EndHTMLTag.pm # once (220µs+21.3ms) by Markdent::Event::StartHeader::BEGIN@13 at line 13 of Markdent/Event/StartHeader.pm # once (225µs+21.3ms) by Markdent::Dialect::Standard::BlockParser::BEGIN@32 at line 32 of Markdent/Dialect/Standard/BlockParser.pm # once (254µs+21.2ms) by Markdent::Event::EndParagraph::BEGIN@10 at line 10 of Markdent/Event/EndParagraph.pm # once (222µs+21.3ms) by Markdent::Event::EndOrderedList::BEGIN@11 at line 11 of Markdent/Event/EndOrderedList.pm # once (222µs+21.3ms) by Markdent::Event::EndHTMLTag::BEGIN@12 at line 12 of Markdent/Event/EndHTMLTag.pm # once (225µs+21.2ms) by Markdent::Event::HTMLEntity::BEGIN@12 at line 12 of Markdent/Event/HTMLEntity.pm # once (222µs+21.2ms) by Markdent::Event::EndUnorderedList::BEGIN@10 at line 10 of Markdent/Event/EndUnorderedList.pm # once (229µs+21.2ms) by Markdent::Event::HTMLTag::BEGIN@12 at line 12 of Markdent/Event/HTMLTag.pm # once (227µs+21.2ms) by MooseX::Role::Parameterized::Parameters::BEGIN@2 at line 2 of MooseX/Role/Parameterized/Parameters.pm # once (221µs+21.2ms) by Markdent::Event::EndLink::BEGIN@11 at line 11 of Markdent/Event/EndLink.pm # once (222µs+21.2ms) by Markdent::Event::EndListItem::BEGIN@11 at line 11 of Markdent/Event/EndListItem.pm # once (250µs+21.1ms) by Markdent::Event::StartOrderedList::BEGIN@11 at line 11 of Markdent/Event/StartOrderedList.pm # once (224µs+21.1ms) by Markdent::Event::StartStrong::BEGIN@12 at line 12 of Markdent/Event/StartStrong.pm # once (219µs+21.1ms) by Markdent::Event::StartUnorderedList::BEGIN@11 at line 11 of Markdent/Event/StartUnorderedList.pm # once (233µs+21.1ms) by Markdent::Event::Image::BEGIN@12 at line 12 of Markdent/Event/Image.pm # once (228µs+21.1ms) by MooseX::Role::Parameterized::Meta::Role::Parameterized::BEGIN@2 at line 2 of MooseX/Role/Parameterized/Meta/Role/Parameterized.pm # once (225µs+21.1ms) by Markdent::Event::StartHTMLTag::BEGIN@12 at line 12 of Markdent/Event/StartHTMLTag.pm # once (224µs+21.1ms) by MooseX::Role::Parameterized::Meta::Role::Parameterizable::BEGIN@2 at line 2 of MooseX/Role/Parameterized/Meta/Role/Parameterizable.pm # once (270µs+21.1ms) by Markdent::Event::StartHeader::BEGIN@12 at line 12 of Markdent/Event/StartHeader.pm # once (237µs+21.1ms) by Markdent::Event::EndBlockquote::BEGIN@11 at line 11 of Markdent/Event/EndBlockquote.pm # once (221µs+21.1ms) by Markdent::Event::StartParagraph::BEGIN@10 at line 10 of Markdent/Event/StartParagraph.pm # once (221µs+21.1ms) by Markdent::Event::EndHeader::BEGIN@12 at line 12 of Markdent/Event/EndHeader.pm # once (221µs+21.1ms) by Markdent::Event::EndParagraph::BEGIN@11 at line 11 of Markdent/Event/EndParagraph.pm # once (220µs+21.1ms) by Markdent::Event::Preformatted::BEGIN@12 at line 12 of Markdent/Event/Preformatted.pm # once (229µs+21.1ms) by Markdent::Event::EndDocument::BEGIN@10 at line 10 of Markdent/Event/EndDocument.pm # once (294µs+21.0ms) by Markdent::Event::EndLink::BEGIN@10 at line 10 of Markdent/Event/EndLink.pm # once (222µs+21.1ms) by Markdent::Event::StartCode::BEGIN@12 at line 12 of Markdent/Event/StartCode.pm # once (240µs+21.0ms) by Markdent::Event::EndDocument::BEGIN@11 at line 11 of Markdent/Event/EndDocument.pm # once (255µs+21.0ms) by Markdent::Event::StartEmphasis::BEGIN@12 at line 12 of Markdent/Event/StartEmphasis.pm # once (221µs+21.0ms) by Markdent::Event::StartDocument::BEGIN@10 at line 10 of Markdent/Event/StartDocument.pm # once (227µs+21.0ms) by Markdent::Event::EndListItem::BEGIN@10 at line 10 of Markdent/Event/EndListItem.pm # once (219µs+21.0ms) by Markdent::Event::StartOrderedList::BEGIN@10 at line 10 of Markdent/Event/StartOrderedList.pm # once (221µs+21.0ms) by Markdent::Event::EndEmphasis::BEGIN@12 at line 12 of Markdent/Event/EndEmphasis.pm # once (229µs+21.0ms) by Markdent::Event::HTMLComment::BEGIN@12 at line 12 of Markdent/Event/HTMLComment.pm # once (254µs+21.0ms) by Markdent::Event::EndUnorderedList::BEGIN@11 at line 11 of Markdent/Event/EndUnorderedList.pm # once (221µs+21.0ms) by Markdent::Event::StartBlockquote::BEGIN@11 at line 11 of Markdent/Event/StartBlockquote.pm # once (220µs+21.0ms) by Markdent::Event::EndBlockquote::BEGIN@10 at line 10 of Markdent/Event/EndBlockquote.pm # once (221µs+21.0ms) by MooseX::Role::Parameterized::Meta::Parameter::BEGIN@2 at line 2 of MooseX/Role/Parameterized/Meta/Parameter.pm # once (221µs+21.0ms) by Markdent::Event::HorizontalRule::BEGIN@11 at line 11 of Markdent/Event/HorizontalRule.pm # once (220µs+20.9ms) by Markdent::Event::StartListItem::BEGIN@10 at line 10 of Markdent/Event/StartListItem.pm # once (230µs+20.9ms) by Markdent::Event::HTMLBlock::BEGIN@12 at line 12 of Markdent/Event/HTMLBlock.pm # once (221µs+20.9ms) by Markdent::Event::HorizontalRule::BEGIN@10 at line 10 of Markdent/Event/HorizontalRule.pm # once (233µs+20.7ms) by Markdent::Role::BalancedEvent::BEGIN@14 at line 14 of Markdent/Role/BalancedEvent.pm # once (250µs+19.1ms) by Markdent::Parser::BEGIN@18 at line 18 of Markdent/Parser.pm # once (223µs+18.4ms) by Markdent::Dialect::Standard::BlockParser::BEGIN@33 at line 33 of Markdent/Dialect/Standard/BlockParser.pm # once (225µs+18.4ms) by Markdent::Dialect::Standard::SpanParser::BEGIN@33 at line 33 of Markdent/Dialect/Standard/SpanParser.pm # once (222µs+15.6ms) by MooseX::StrictConstructor::Role::Meta::Class::BEGIN@12 at line 12 of MooseX/StrictConstructor/Role/Meta/Class.pm # once (249µs+14.4ms) by MooseX::SemiAffordanceAccessor::Role::Attribute::BEGIN@9 at line 9 of MooseX/SemiAffordanceAccessor/Role/Attribute.pm # once (226µs+13.9ms) by Moose::Meta::Method::Accessor::Native::Array::elements::BEGIN@10 at line 10 of Moose/Meta/Method/Accessor/Native/Array/elements.pm # once (233µs+13.7ms) by Moose::Meta::Attribute::Native::Trait::String::BEGIN@2 at line 2 of Moose/Meta/Attribute/Native/Trait/String.pm # once (226µs+13.7ms) by Moose::Meta::Method::Accessor::Native::Array::Writer::BEGIN@10 at line 10 of Moose/Meta/Method/Accessor/Native/Array/Writer.pm # once (223µs+13.7ms) by Moose::Meta::Method::Accessor::Native::Bool::unset::BEGIN@10 at line 10 of Moose/Meta/Method/Accessor/Native/Bool/unset.pm # once (222µs+13.7ms) by Moose::Meta::Method::Accessor::Native::Hash::Writer::BEGIN@12 at line 12 of Moose/Meta/Method/Accessor/Native/Hash/Writer.pm # once (222µs+13.7ms) by Moose::Meta::Method::Accessor::Native::String::clear::BEGIN@10 at line 10 of Moose/Meta/Method/Accessor/Native/String/clear.pm # once (224µs+13.6ms) by Moose::Meta::Method::Accessor::Native::Array::push::BEGIN@10 at line 10 of Moose/Meta/Method/Accessor/Native/Array/push.pm # once (226µs+13.6ms) by Markdent::Role::AnyParser::BEGIN@10 at line 10 of Markdent/Role/AnyParser.pm # once (266µs+13.6ms) by Markdent::Role::EventAsText::BEGIN@10 at line 10 of Markdent/Role/EventAsText.pm # once (238µs+13.6ms) by Moose::Meta::Method::Accessor::Native::Hash::get::BEGIN@12 at line 12 of Moose/Meta/Method/Accessor/Native/Hash/get.pm # once (238µs+13.6ms) by Moose::Meta::Attribute::Native::Trait::Array::BEGIN@3 at line 3 of Moose/Meta/Attribute/Native/Trait/Array.pm # once (224µs+13.6ms) by Moose::Meta::Method::Accessor::Native::Counter::dec::BEGIN@10 at line 10 of Moose/Meta/Method/Accessor/Native/Counter/dec.pm # once (224µs+13.6ms) by Moose::Meta::Method::Accessor::Native::Bool::set::BEGIN@10 at line 10 of Moose/Meta/Method/Accessor/Native/Bool/set.pm # once (225µs+13.6ms) by Moose::Meta::Method::Accessor::Native::String::append::BEGIN@10 at line 10 of Moose/Meta/Method/Accessor/Native/String/append.pm # once (225µs+13.5ms) by Moose::Meta::Method::Accessor::Native::Hash::set::BEGIN@13 at line 13 of Moose/Meta/Method/Accessor/Native/Hash/set.pm # once (225µs+13.5ms) by Moose::Meta::Attribute::Native::Trait::Bool::BEGIN@2 at line 2 of Moose/Meta/Attribute/Native/Trait/Bool.pm # once (223µs+13.5ms) by Moose::Meta::Method::Accessor::Native::Hash::BEGIN@10 at line 10 of Moose/Meta/Method/Accessor/Native/Hash.pm # once (224µs+13.5ms) by Moose::Meta::Method::Accessor::Native::Counter::inc::BEGIN@10 at line 10 of Moose/Meta/Method/Accessor/Native/Counter/inc.pm # once (223µs+13.5ms) by Moose::Meta::Method::Accessor::Native::String::length::BEGIN@10 at line 10 of Moose/Meta/Method/Accessor/Native/String/length.pm # once (229µs+13.5ms) by Moose::Meta::Attribute::Native::Trait::Counter::BEGIN@3 at line 3 of Moose/Meta/Attribute/Native/Trait/Counter.pm # once (225µs+13.5ms) by Moose::Meta::Method::Accessor::Native::Reader::BEGIN@10 at line 10 of Moose/Meta/Method/Accessor/Native/Reader.pm # once (225µs+13.5ms) by Markdent::Role::BlockParser::BEGIN@10 at line 10 of Markdent/Role/BlockParser.pm # once (253µs+13.5ms) by Moose::Meta::Method::Accessor::Native::Collection::BEGIN@10 at line 10 of Moose/Meta/Method/Accessor/Native/Collection.pm # once (222µs+13.5ms) by MooseX::StrictConstructor::Role::Object::BEGIN@9 at line 9 of MooseX/StrictConstructor/Role/Object.pm # once (222µs+13.5ms) by Moose::Meta::Method::Accessor::Native::Array::clear::BEGIN@10 at line 10 of Moose/Meta/Method/Accessor/Native/Array/clear.pm # once (258µs+13.4ms) by MooseX::Role::Parameterized::Meta::Trait::Parameterized::BEGIN@2 at line 2 of MooseX/Role/Parameterized/Meta/Trait/Parameterized.pm # once (227µs+13.5ms) by Moose::Meta::Attribute::Native::Trait::BEGIN@3 at line 3 of Moose/Meta/Attribute/Native/Trait.pm # once (222µs+13.4ms) by Moose::Meta::Method::Accessor::Native::Array::BEGIN@6 at line 6 of Moose/Meta/Method/Accessor/Native/Array.pm # once (220µs+13.4ms) by Markdent::Role::Handler::BEGIN@10 at line 10 of Markdent/Role/Handler.pm # once (228µs+13.4ms) by Markdent::Role::SpanParser::BEGIN@10 at line 10 of Markdent/Role/SpanParser.pm # once (235µs+13.4ms) by Moose::Meta::Attribute::Native::Trait::Hash::BEGIN@3 at line 3 of Moose/Meta/Attribute/Native/Trait/Hash.pm # once (288µs+13.3ms) by Markdent::Role::DebugPrinter::BEGIN@12 at line 12 of Markdent/Role/DebugPrinter.pm # once (224µs+13.4ms) by Markdent::Role::HTMLStream::BEGIN@18 at line 18 of Markdent/Role/HTMLStream.pm # once (226µs+13.3ms) by Moose::Meta::Method::Accessor::Native::Writer::BEGIN@12 at line 12 of Moose/Meta/Method/Accessor/Native/Writer.pm # once (224µs+13.3ms) by Markdent::Role::EventsAsMethods::BEGIN@12 at line 12 of Markdent/Role/EventsAsMethods.pm # once (236µs+13.2ms) by Moose::Meta::Method::Accessor::Native::BEGIN@13 at line 13 of Moose/Meta/Method/Accessor/Native.pm # once (201µs+12.0ms) by MooseX::Types::Base::BEGIN@14 at line 14 of MooseX/Types/Base.pm # once (227µs+9.65ms) by MooseX::Types::BEGIN@10 at line 10 of MooseX/Types.pm # once (205µs+9.62ms) by Moose::Meta::Attribute::Native::Trait::BEGIN@6 at line 6 of Moose/Meta/Attribute/Native/Trait.pm # once (259µs+8.10ms) by Moose::BEGIN@35 at line 35 of Moose.pm # once (195µs+7.83ms) by Moose::Role::BEGIN@19 at line 19 of Moose/Role.pm # once (221µs+2.08ms) by MooseX::Params::Validate::BEGIN@10 at line 10 of MooseX/Params/Validate.pm
return sub {
379
380 # I think we could use Sub::Exporter's collector feature
381 # to do this, but that would be rather gross, since that
382 # feature isn't really designed to return a value to the
383 # caller of the exporter sub.
384 #
385 # Also, this makes sure we preserve backwards compat for
386 # _get_caller, so it always sees the arguments in the
387 # expected order.
388137322µs my $traits;
3891372.25ms1377.84ms ( $traits, @_ ) = _strip_traits(@_);
# spent 7.84ms making 137 calls to Moose::Exporter::_strip_traits, avg 57µs/call
390
391137277µs my $metaclass;
3921372.16ms1375.78ms ( $metaclass, @_ ) = _strip_metaclass(@_);
# spent 5.78ms making 137 calls to Moose::Exporter::_strip_metaclass, avg 42µs/call
393137337µs $metaclass
394 = Moose::Util::resolve_metaclass_alias( 'Class' => $metaclass )
395 if defined $metaclass && length $metaclass;
396
397137280µs my $meta_name;
3981372.16ms1375.78ms ( $meta_name, @_ ) = _strip_meta_name(@_);
# spent 5.78ms making 137 calls to Moose::Exporter::_strip_meta_name, avg 42µs/call
399
400 # Normally we could look at $_[0], but in some weird cases
401 # (involving goto &Moose::import), $_[0] ends as something
402 # else (like Squirrel).
403137445µs my $class = $exporting_package;
404
4051371.59ms1372.06ms $CALLER = _get_caller(@_);
# spent 2.06ms making 137 calls to Moose::Exporter::_get_caller, avg 15µs/call
406
407 # this works because both pragmas set $^H (see perldoc
408 # perlvar) which affects the current compilation -
409 # i.e. the file who use'd us - which is why we don't need
410 # to do anything special to make it affect that file
411 # rather than this one (which is already compiled)
412
4131371.70ms1371.93ms strict->import;
# spent 1.93ms making 137 calls to strict::import, avg 14µs/call
4141371.61ms1379.66ms warnings->import;
# spent 9.66ms making 137 calls to warnings::import, avg 71µs/call
415
416137302µs my $did_init_meta;
4172745.44ms1371.65ms for my $c ( grep { $_->can('init_meta') } $class, @{$exports_from} ) {
# spent 1.65ms making 137 calls to UNIVERSAL::can, avg 12µs/call
418
419 # init_meta can apply a role, which when loaded uses
420 # Moose::Exporter, which in turn sets $CALLER, so we need
421 # to protect against that.
422127545µs local $CALLER = $CALLER;
4231271.56ms1271.73s $c->init_meta(
# spent 925ms making 42 calls to Moose::Exporter::__ANON__[Moose/Exporter.pm:643], avg 22.0ms/call # spent 618ms making 45 calls to Moose::init_meta, avg 13.7ms/call # spent 170ms making 38 calls to Moose::Role::init_meta, avg 4.46ms/call # spent 21.4ms making 2 calls to MooseX::Role::Parameterized::init_meta, avg 10.7ms/call
424 for_class => $CALLER,
425 metaclass => $metaclass,
426 meta_name => $meta_name,
427 );
4281271.25ms $did_init_meta = 1;
429 }
430
431137543µs if ( $did_init_meta && @{$traits} ) {
432
433 # The traits will use Moose::Role, which in turn uses
434 # Moose::Exporter, which in turn sets $CALLER, so we need
435 # to protect against that.
436 local $CALLER = $CALLER;
437 _apply_meta_traits( $CALLER, $traits );
438 }
439 elsif ( @{$traits} ) {
440 require Moose;
441 Moose->throw_error(
442 "Cannot provide traits when $class does not have an init_meta() method"
443 );
444 }
445
446137638µs my ( undef, @args ) = @_;
447137441µs my $extra = shift @args if ref $args[0] eq 'HASH';
448
449137302µs $extra ||= {};
450137872µs if ( !$extra->{into} ) {
451133512µs $extra->{into_level} ||= 0;
452133353µs $extra->{into_level}++;
453 }
454
4551374.93ms137839ms $class->$exporter( $extra, @args );
# spent 839ms making 137 calls to Sub::Exporter::__ANON__[Sub/Exporter.pm:756], avg 6.12ms/call
4567215µs };
457}
458
459
# spent 7.84ms (5.39+2.44) within Moose::Exporter::_strip_traits which was called 137 times, avg 57µs/call: # 137 times (5.39ms+2.44ms) by Moose::Exporter::__ANON__[/home/doy/coding/src/Moose/blib/lib//Moose/Exporter.pm:456] at line 389, avg 57µs/call
sub _strip_traits {
4602815.89ms1372.44ms my $idx = first_index { ( $_ || '' ) eq '-traits' } @_;
# spent 2.44ms making 137 calls to List::MoreUtils::firstidx, avg 18µs/call
461
4621372.45ms return ( [], @_ ) unless $idx >= 0 && $#_ >= $idx + 1;
463
464 my $traits = $_[ $idx + 1 ];
465
466 splice @_, $idx, 2;
467
468 $traits = [$traits] unless ref $traits;
469
470 return ( $traits, @_ );
471}
472
473
# spent 5.78ms (4.23+1.56) within Moose::Exporter::_strip_metaclass which was called 137 times, avg 42µs/call: # 137 times (4.23ms+1.56ms) by Moose::Exporter::__ANON__[/home/doy/coding/src/Moose/blib/lib//Moose/Exporter.pm:456] at line 392, avg 42µs/call
sub _strip_metaclass {
4742814.08ms1371.56ms my $idx = first_index { ( $_ || '' ) eq '-metaclass' } @_;
# spent 1.56ms making 137 calls to List::MoreUtils::firstidx, avg 11µs/call
475
4761372.04ms return ( undef, @_ ) unless $idx >= 0 && $#_ >= $idx + 1;
477
478 my $metaclass = $_[ $idx + 1 ];
479
480 splice @_, $idx, 2;
481
482 return ( $metaclass, @_ );
483}
484
485
# spent 5.78ms (4.25+1.53) within Moose::Exporter::_strip_meta_name which was called 137 times, avg 42µs/call: # 137 times (4.25ms+1.53ms) by Moose::Exporter::__ANON__[/home/doy/coding/src/Moose/blib/lib//Moose/Exporter.pm:456] at line 398, avg 42µs/call
sub _strip_meta_name {
4862814.08ms1371.53ms my $idx = first_index { ( $_ || '' ) eq '-meta_name' } @_;
# spent 1.53ms making 137 calls to List::MoreUtils::firstidx, avg 11µs/call
487
4881372.10ms return ( 'meta', @_ ) unless $idx >= 0 && $#_ >= $idx + 1;
489
490 my $meta_name = $_[ $idx + 1 ];
491
492 splice @_, $idx, 2;
493
494 return ( $meta_name, @_ );
495}
496
497sub _apply_meta_traits {
498 my ( $class, $traits ) = @_;
499
500 return unless @{$traits};
501
502 my $meta = Class::MOP::class_of($class);
503
504 my $type = ( split /::/, ref $meta )[-1]
505 or Moose->throw_error(
506 'Cannot determine metaclass type for trait application . Meta isa '
507 . ref $meta );
508
509 my @resolved_traits = map {
510 ref $_
511 ? $_
512 : Moose::Util::resolve_metatrait_alias( $type => $_ )
513 } @$traits;
514
515 return unless @resolved_traits;
516
517 my %args = ( for => $class );
518
519 if ( $meta->isa('Moose::Meta::Role') ) {
520 $args{role_metaroles} = { role => \@resolved_traits };
521 }
522 else {
523 $args{class_metaroles} = { class => \@resolved_traits };
524 }
525
526 Moose::Util::MetaRole::apply_metaroles(%args);
527}
528
529
# spent 2.06ms within Moose::Exporter::_get_caller which was called 137 times, avg 15µs/call: # 137 times (2.06ms+0s) by Moose::Exporter::__ANON__[/home/doy/coding/src/Moose/blib/lib//Moose/Exporter.pm:456] at line 405, avg 15µs/call
sub _get_caller {
530
531 # 1 extra level because it's called by import so there's a layer
532 # of indirection
533137310µs my $offset = 1;
534
535 return
5361372.30ms ( ref $_[1] && defined $_[1]->{into} ) ? $_[1]->{into}
537 : ( ref $_[1] && defined $_[1]->{into_level} )
538 ? caller( $offset + $_[1]->{into_level} )
539 : caller($offset);
540}
541
542
# spent 212µs within Moose::Exporter::_make_unimport_sub which was called 7 times, avg 30µs/call: # 7 times (212µs+0s) by Moose::Exporter::build_import_methods at line 63, avg 30µs/call
sub _make_unimport_sub {
543716µs shift;
544723µs my $exporting_package = shift;
545716µs my $exports = shift;
546716µs my $export_recorder = shift;
547716µs my $is_reexport = shift;
548
549
# spent 24.5ms (1.60+22.9) within Moose::Exporter::__ANON__[/home/doy/coding/src/Moose/blib/lib//Moose/Exporter.pm:557] which was called 34 times, avg 720µs/call: # once (59µs+1.10ms) by Moose::Meta::Attribute::Native::Trait::Counter::BEGIN@17 at line 17 of Moose/Meta/Attribute/Native/Trait/Counter.pm # once (45µs+794µs) by Moose::Meta::Method::Accessor::Native::Counter::dec::BEGIN@39 at line 39 of Moose/Meta/Method/Accessor/Native/Counter/dec.pm # once (48µs+723µs) by Moose::Meta::Method::Accessor::Native::String::append::BEGIN@40 at line 40 of Moose/Meta/Method/Accessor/Native/String/append.pm # once (51µs+716µs) by Moose::Meta::Attribute::Native::Trait::Bool::BEGIN@13 at line 13 of Moose/Meta/Attribute/Native/Trait/Bool.pm # once (45µs+717µs) by Moose::Meta::Method::Accessor::Native::String::length::BEGIN@24 at line 24 of Moose/Meta/Method/Accessor/Native/String/length.pm # once (44µs+718µs) by Moose::Meta::Method::Accessor::Native::String::clear::BEGIN@32 at line 32 of Moose/Meta/Method/Accessor/Native/String/clear.pm # once (43µs+718µs) by Moose::Meta::Method::Accessor::Native::Array::BEGIN@28 at line 28 of Moose/Meta/Method/Accessor/Native/Array.pm # once (44µs+715µs) by Moose::Meta::Method::Accessor::Native::Array::push::BEGIN@44 at line 44 of Moose/Meta/Method/Accessor/Native/Array/push.pm # once (45µs+709µs) by Moose::Meta::Method::Accessor::Native::Counter::inc::BEGIN@39 at line 39 of Moose/Meta/Method/Accessor/Native/Counter/inc.pm # once (43µs+706µs) by Moose::Meta::Method::Accessor::Native::Array::clear::BEGIN@37 at line 37 of Moose/Meta/Method/Accessor/Native/Array/clear.pm # once (44µs+698µs) by Moose::Meta::Method::Accessor::Native::Hash::get::BEGIN@45 at line 45 of Moose/Meta/Method/Accessor/Native/Hash/get.pm # once (44µs+697µs) by Moose::Meta::Method::Accessor::Native::Array::elements::BEGIN@24 at line 24 of Moose/Meta/Method/Accessor/Native/Array/elements.pm # once (48µs+679µs) by Moose::Meta::Method::Accessor::Native::Hash::BEGIN@26 at line 26 of Moose/Meta/Method/Accessor/Native/Hash.pm # once (44µs+679µs) by Moose::Meta::Method::Accessor::Native::Bool::unset::BEGIN@32 at line 32 of Moose/Meta/Method/Accessor/Native/Bool/unset.pm # once (44µs+678µs) by Moose::Meta::Method::Accessor::Native::Bool::set::BEGIN@32 at line 32 of Moose/Meta/Method/Accessor/Native/Bool/set.pm # once (45µs+672µs) by Moose::Meta::Method::Accessor::Native::Hash::set::BEGIN@116 at line 116 of Moose/Meta/Method/Accessor/Native/Hash/set.pm # once (43µs+673µs) by Moose::Meta::Method::Accessor::Native::Hash::Writer::BEGIN@29 at line 29 of Moose/Meta/Method/Accessor/Native/Hash/Writer.pm # once (44µs+671µs) by MooseX::StrictConstructor::Role::Meta::Class::BEGIN@37 at line 37 of MooseX/StrictConstructor/Role/Meta/Class.pm # once (45µs+661µs) by Moose::Meta::Method::Accessor::Native::Collection::BEGIN@149 at line 149 of Moose/Meta/Method/Accessor/Native/Collection.pm # once (56µs+650µs) by Moose::Meta::Method::Accessor::Native::Writer::BEGIN@177 at line 177 of Moose/Meta/Method/Accessor/Native/Writer.pm # once (43µs+660µs) by Moose::Meta::Method::Accessor::Native::Reader::BEGIN@48 at line 48 of Moose/Meta/Method/Accessor/Native/Reader.pm # once (42µs+656µs) by Moose::Meta::Attribute::Native::Trait::String::BEGIN@14 at line 14 of Moose/Meta/Attribute/Native/Trait/String.pm # once (47µs+645µs) by MooseX::Role::Parameterized::Meta::Trait::Parameterized::BEGIN@19 at line 19 of MooseX/Role/Parameterized/Meta/Trait/Parameterized.pm # once (42µs+648µs) by Moose::Meta::Attribute::Native::Trait::Array::BEGIN@13 at line 13 of Moose/Meta/Attribute/Native/Trait/Array.pm # once (42µs+645µs) by Moose::Meta::Attribute::Native::Trait::Hash::BEGIN@13 at line 13 of Moose/Meta/Attribute/Native/Trait/Hash.pm # once (55µs+627µs) by Moose::Meta::Method::Accessor::Native::BEGIN@153 at line 153 of Moose/Meta/Method/Accessor/Native.pm # once (45µs+635µs) by Moose::Meta::Attribute::Native::Trait::BEGIN@198 at line 198 of Moose/Meta/Attribute/Native/Trait.pm # once (45µs+613µs) by Moose::Meta::Attribute::Native::Trait::BEGIN@199 at line 199 of Moose/Meta/Attribute/Native/Trait.pm # once (48µs+608µs) by MooseX::SemiAffordanceAccessor::Role::Attribute::BEGIN@36 at line 36 of MooseX/SemiAffordanceAccessor/Role/Attribute.pm # once (101µs+534µs) by MooseX::Role::Parameterized::Parameters::BEGIN@7 at line 7 of MooseX/Role/Parameterized/Parameters.pm # once (42µs+580µs) by MooseX::StrictConstructor::Role::Object::BEGIN@32 at line 32 of MooseX/StrictConstructor/Role/Object.pm # once (45µs+566µs) by MooseX::Role::Parameterized::Meta::Role::Parameterizable::BEGIN@131 at line 131 of MooseX/Role/Parameterized/Meta/Role/Parameterizable.pm # once (42µs+552µs) by MooseX::Role::Parameterized::Meta::Parameter::BEGIN@27 at line 27 of MooseX/Role/Parameterized/Meta/Parameter.pm # once (41µs+539µs) by MooseX::Role::Parameterized::Meta::Role::Parameterized::BEGIN@9 at line 9 of MooseX/Role/Parameterized/Meta/Role/Parameterized.pm
return sub {
55034167µs my $caller = scalar caller();
551 Moose::Exporter->_remove_keywords(
552 $caller,
553341.63ms3422.9ms [ keys %{$exports} ],
# spent 22.9ms making 34 calls to Moose::Exporter::_remove_keywords, avg 673µs/call
554 $export_recorder,
555 $is_reexport,
556 );
5577144µs };
558}
559
560
# spent 22.9ms (22.5+423µs) within Moose::Exporter::_remove_keywords which was called 34 times, avg 673µs/call: # 34 times (22.5ms+423µs) by Moose::Exporter::__ANON__[/home/doy/coding/src/Moose/blib/lib//Moose/Exporter.pm:557] at line 553, avg 673µs/call
sub _remove_keywords {
5613498µs shift;
56234113µs my $package = shift;
5633477µs my $keywords = shift;
56434109µs my $recorded_exports = shift;
5653479µs my $is_reexport = shift;
566
5673283µs2240µs
# spent 146µs (53+94) within Moose::Exporter::BEGIN@567 which was called: # once (53µs+94µs) by Moose::BEGIN@15 at line 567
no strict 'refs';
# spent 146µs making 1 call to Moose::Exporter::BEGIN@567 # spent 94µs making 1 call to strict::unimport
568
56934663µs foreach my $name ( @{$keywords} ) {
5704715.92ms if ( defined &{ $package . '::' . $name } ) {
5714713.80ms my $sub = \&{ $package . '::' . $name };
572
573 # make sure it is from us
5744711.96ms next unless $recorded_exports->{$sub};
575
5764711.21ms if ( $is_reexport->{$name} ) {
57731.18ms2160µs
# spent 100µs (40+60) within Moose::Exporter::BEGIN@577 which was called: # once (40µs+60µs) by Moose::BEGIN@15 at line 577
no strict 'refs';
# spent 100µs making 1 call to Moose::Exporter::BEGIN@577 # spent 60µs making 1 call to strict::unimport
578 next
579 unless _export_is_flagged(
580661.94ms66423µs \*{ join q{::} => $package, $name } );
# spent 423µs making 66 calls to Moose::Exporter::_export_is_flagged, avg 6µs/call
581 }
582
583 # and if it is from us, then undef the slot
5844697.12ms delete ${ $package . '::' }{$name};
585 }
586 }
587}
588
589
# spent 747µs within Moose::Exporter::_make_init_meta which was called 7 times, avg 107µs/call: # 7 times (747µs+0s) by Moose::Exporter::build_import_methods at line 70, avg 107µs/call
sub _make_init_meta {
590717µs shift;
591722µs my $class = shift;
592718µs my $args = shift;
593
594714µs my %old_style_roles;
5957197µs for my $role (
596 map {"${_}_roles"}
597 qw(
598 metaclass
599 attribute_metaclass
600 method_metaclass
601 wrapped_method_metaclass
602 instance_metaclass
603 constructor_class
604 destructor_class
605 error_class
606 )
607 ) {
60856244µs $old_style_roles{$role} = $args->{$role}
609 if exists $args->{$role};
610 }
611
612714µs my %base_class_roles;
613726µs %base_class_roles = ( roles => $args->{base_class_roles} )
614 if exists $args->{base_class_roles};
615
616 my %new_style_roles = map { $_ => $args->{$_} }
617759µs grep { exists $args->{$_} } qw( class_metaroles role_metaroles );
618
6197106µs return unless %new_style_roles || %old_style_roles || %base_class_roles;
620
621
# spent 925ms (5.44+920) within Moose::Exporter::__ANON__[/home/doy/coding/src/Moose/blib/lib//Moose/Exporter.pm:643] which was called 42 times, avg 22.0ms/call: # 42 times (5.44ms+920ms) by Moose::Exporter::__ANON__[/home/doy/coding/src/Moose/blib/lib//Moose/Exporter.pm:456] at line 423, avg 22.0ms/call
return sub {
62242104µs shift;
62342430µs my %options = @_;
624
62542505µs421.54ms return unless Class::MOP::class_of( $options{for_class} );
# spent 1.54ms making 42 calls to Class::MOP::class_of, avg 37µs/call
626
627422.41ms84644ms if ( %new_style_roles || %old_style_roles ) {
# spent 641ms making 42 calls to Moose::Util::MetaRole::apply_metaroles, avg 15.3ms/call # spent 2.75ms making 42 calls to Class::MOP::Class::DESTROY, avg 65µs/call
628 Moose::Util::MetaRole::apply_metaroles(
629 for => $options{for_class},
630 %new_style_roles,
631 %old_style_roles,
632 );
633 }
634
635 Moose::Util::MetaRole::apply_base_class_roles(
636422.17ms126276ms for_class => $options{for_class},
# spent 274ms making 42 calls to Moose::Util::MetaRole::apply_base_class_roles, avg 6.52ms/call # spent 1.52ms making 42 calls to Class::MOP::class_of, avg 36µs/call # spent 319µs making 42 calls to UNIVERSAL::isa, avg 8µs/call
637 %base_class_roles,
638 )
639 if Class::MOP::class_of( $options{for_class} )
640 ->isa('Moose::Meta::Class');
641
642421.08ms421.19ms return Class::MOP::class_of( $options{for_class} );
# spent 1.19ms making 42 calls to Class::MOP::class_of, avg 28µs/call
643242µs };
644}
645
646
# spent 970µs (365+605) within Moose::Exporter::import which was called 7 times, avg 139µs/call: # once (108µs+82µs) by MooseX::StrictConstructor::BEGIN@10 at line 10 of MooseX/StrictConstructor.pm # once (50µs+103µs) by Moose::BEGIN@15 at line 15 of Moose.pm # once (42µs+92µs) by Moose::Role::BEGIN@17 at line 17 of Moose/Role.pm # once (41µs+91µs) by MooseX::SemiAffordanceAccessor::BEGIN@10 at line 10 of MooseX/SemiAffordanceAccessor.pm # once (42µs+81µs) by MooseX::Role::Parameterized::BEGIN@4 at line 4 of MooseX/Role/Parameterized.pm # once (42µs+78µs) by Moose::Util::TypeConstraints::BEGIN@7 at line 7 of Moose/Util/TypeConstraints.pm # once (40µs+78µs) by MooseX::Types::CheckedUtilExports::BEGIN@14 at line 14 of MooseX/Types/CheckedUtilExports.pm
sub import {
647776µs795µs strict->import;
# spent 95µs making 7 calls to strict::import, avg 14µs/call
6487184µs7510µs warnings->import;
# spent 510µs making 7 calls to warnings::import, avg 73µs/call
649}
650
651125µs1;
652
653__END__
 
# spent 423µs within Moose::Exporter::_export_is_flagged which was called 66 times, avg 6µs/call: # 66 times (423µs+0s) by Moose::Exporter::_remove_keywords at line 580, avg 6µs/call
sub Moose::Exporter::_export_is_flagged; # xsub
# spent 1.13ms within Moose::Exporter::_flag_as_reexport which was called 163 times, avg 7µs/call: # 163 times (1.13ms+0s) by Moose::Exporter::__ANON__[/home/doy/coding/src/Moose/blib/lib//Moose/Exporter.pm:125] at line 123, avg 7µs/call
sub Moose::Exporter::_flag_as_reexport; # xsub