← Index
NYTProf Performance Profile   « block view • line view • sub view »
For reply.pl
  Run on Thu Oct 21 22:40:13 2010
Reported on Thu Oct 21 22:44:38 2010

Filename/home/hinrik/perl5/perlbrew/perls/perl-5.13.5/lib/site_perl/5.13.5/x86_64-linux/Mouse/Util.pm
StatementsExecuted 336 statements in 4.02ms
Subroutines
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
22113.10ms51.4msMouse::Util::::_try_load_one_classMouse::Util::_try_load_one_class (recurses: max depth 1, inclusive time 46µs)
3031373µs373µsMouse::Util::::install_subroutinesMouse::Util::install_subroutines
111318µs541µsMouse::Util::::BEGIN@128Mouse::Util::BEGIN@128
311295µs43.9msMouse::Util::::apply_all_rolesMouse::Util::apply_all_roles
13411291µs291µsMouse::Util::::get_code_refMouse::Util::get_code_ref (xsub)
2242231µs51.6msMouse::Util::::load_classMouse::Util::load_class (recurses: max depth 1, inclusive time 78µs)
111173µs1.51msMouse::Util::::BEGIN@20Mouse::Util::BEGIN@20
5921108µs108µsMouse::Util::::is_a_type_constraintMouse::Util::is_a_type_constraint (xsub)
221179µs79µsMouse::Util::::is_class_loadedMouse::Util::is_class_loaded (xsub)
62257µs142µsMouse::Util::::metaMouse::Util::meta
31149µs303µsMouse::Util::::does_roleMouse::Util::does_role
133345µs45µsMouse::Util::::is_a_metaroleMouse::Util::is_a_metarole (xsub)
221139µs39µsMouse::Util::::is_valid_class_nameMouse::Util::is_valid_class_name (xsub)
62135µs35µsMouse::Util::::CORE:substMouse::Util::CORE:subst (opcode)
11133µs44µsMouse::Util::::BEGIN@2Mouse::Util::BEGIN@2
61132µs32µsMouse::Util::::generate_isa_predicate_forMouse::Util::generate_isa_predicate_for (xsub)
91130µs30µsMouse::Util::::is_a_metaclassMouse::Util::is_a_metaclass (xsub)
33119µs19µsMouse::Util::::generate_can_predicate_forMouse::Util::generate_can_predicate_for (xsub)
61112µs12µsMouse::Util::::get_code_packageMouse::Util::get_code_package (xsub)
11112µs42µsMouse::Util::::BEGIN@13Mouse::Util::BEGIN@13
11111µs36µsMouse::Util::::BEGIN@142Mouse::Util::BEGIN@142
11110µs33µsMouse::Util::::BEGIN@12Mouse::Util::BEGIN@12
11110µs49µsMouse::Util::::BEGIN@14Mouse::Util::BEGIN@14
4119µs9µsMouse::Util::::get_code_infoMouse::Util::get_code_info (xsub)
1117µs7µsMouse::Util::::BEGIN@80Mouse::Util::BEGIN@80
1116µs6µsMouse::Util::::BEGIN@81Mouse::Util::BEGIN@81
1114µs4µsMouse::Util::::ENDMouse::Util::END
1112µs2µsMouse::Util::::__register_metaclass_storageMouse::Util::__register_metaclass_storage (xsub)
0000s0sMouse::Util::::__ANON__[:151]Mouse::Util::__ANON__[:151]
0000s0sMouse::Util::::__ANON__[:175]Mouse::Util::__ANON__[:175]
0000s0sMouse::Util::::__ANON__[:77]Mouse::Util::__ANON__[:77]
0000s0sMouse::Util::::doesMouse::Util::does
0000s0sMouse::Util::::dumpMouse::Util::dump
0000s0sMouse::Util::::english_listMouse::Util::english_list
0000s0sMouse::Util::::find_metaMouse::Util::find_meta
0000s0sMouse::Util::::load_first_existing_classMouse::Util::load_first_existing_class
0000s0sMouse::Util::::not_supportedMouse::Util::not_supported
0000s0sMouse::Util::::quoted_english_listMouse::Util::quoted_english_list
0000s0sMouse::Util::::resolve_metaclass_aliasMouse::Util::resolve_metaclass_alias
0000s0sMouse::Util::::throw_errorMouse::Util::throw_error
Call graph for these subroutines as a Graphviz dot language file.
Line State
ments
Time
on line
Calls Time
in subs
Code
1package Mouse::Util;
2270µs256µs
# spent 44µs (33+12) within Mouse::Util::BEGIN@2 which was called: # once (33µs+12µs) by Mouse::BEGIN@4 at line 2
use Mouse::Exporter; # enables strict and warnings
# spent 44µs making 1 call to Mouse::Util::BEGIN@2 # spent 12µs making 1 call to Mouse::Exporter::import
3
4# must be here because it will be refered by other modules loaded
5sub get_linear_isa($;$); ## no critic
6
7# must be here because it will called in Mouse::Exporter
8
# spent 373µs within Mouse::Util::install_subroutines which was called 30 times, avg 12µs/call: # 15 times (195µs+0s) by Mouse::Exporter::do_import at line 216 of Mouse/Exporter.pm, avg 13µs/call # 10 times (87µs+0s) by Mouse::Exporter::do_import at line 213 of Mouse/Exporter.pm, avg 9µs/call # 5 times (90µs+0s) by Mouse::Exporter::setup_import_methods at line 48 of Mouse/Exporter.pm, avg 18µs/call
sub install_subroutines {
9736µs my $into = shift;
10
11 while(my($name, $code) = splice @_, 0, 2){
12228µs256µs
# spent 33µs (10+23) within Mouse::Util::BEGIN@12 which was called: # once (10µs+23µs) by Mouse::BEGIN@4 at line 12
no strict 'refs';
# spent 33µs making 1 call to Mouse::Util::BEGIN@12 # spent 23µs making 1 call to strict::unimport
13228µs272µs
# spent 42µs (12+30) within Mouse::Util::BEGIN@13 which was called: # once (12µs+30µs) by Mouse::BEGIN@4 at line 13
no warnings 'once', 'redefine';
# spent 42µs making 1 call to Mouse::Util::BEGIN@13 # spent 30µs making 1 call to warnings::unimport
142218µs287µs
# spent 49µs (10+39) within Mouse::Util::BEGIN@14 which was called: # once (10µs+39µs) by Mouse::BEGIN@4 at line 14
use warnings FATAL => 'uninitialized';
# spent 49µs making 1 call to Mouse::Util::BEGIN@14 # spent 39µs making 1 call to warnings::import
15 *{$into . '::' . $name} = \&{$code};
16 }
17 return;
18}
19
20
# spent 1.51ms (173µs+1.33) within Mouse::Util::BEGIN@20 which was called: # once (173µs+1.33ms) by Mouse::BEGIN@4 at line 78
BEGIN{
21 # This is used in Mouse::PurePerl
229136µs1404µs Mouse::Exporter->setup_import_methods(
# spent 404µs making 1 call to Mouse::Exporter::setup_import_methods
23 as_is => [qw(
24 find_meta
25 does_role
26 resolve_metaclass_alias
27 apply_all_roles
28 english_list
29
30 load_class
31 is_class_loaded
32
33 get_linear_isa
34 get_code_info
35
36 get_code_package
37 get_code_ref
38
39 not_supported
40
41 does meta throw_error dump
42 )],
43 groups => {
44 default => [], # export no functions by default
45
46 # The ':meta' group is 'use metaclass' for Mouse
47 meta => [qw(does meta dump throw_error)],
48 },
49 );
50
51 our $VERSION = '0.80';
52
53 my $xs = !(defined(&is_valid_class_name) || $ENV{MOUSE_PUREPERL} || $ENV{PERL_ONLY});
54
55 # Because Mouse::Util is loaded first in all the Mouse sub-modules,
56 # XSLoader must be placed here, not in Mouse.pm.
57 if($xs){
58 # XXX: XSLoader tries to get the object path from caller's file name
59 # $hack_mouse_file fools its mechanism
6018µs (my $hack_mouse_file = __FILE__) =~ s/.Util//; # .../Mouse/Util.pm -> .../Mouse.pm
# spent 8µs making 1 call to Mouse::Util::CORE:subst
61 $xs = eval sprintf("#line %d %s\n", __LINE__, $hack_mouse_file) . q{
62 local $^W = 0; # workaround 'redefine' warning to &install_subroutines
63 require XSLoader;
64 XSLoader::load('Mouse', $VERSION);
65 Mouse::Util->import({ into => 'Mouse::Meta::Method::Constructor::XS' }, ':meta');
66 Mouse::Util->import({ into => 'Mouse::Meta::Method::Destructor::XS' }, ':meta');
67 Mouse::Util->import({ into => 'Mouse::Meta::Method::Accessor::XS' }, ':meta');
68 return 1;
69 } || 0;
70 warn $@ if $@ && $ENV{MOUSE_XS};
71 }
72
73 if(!$xs){
74 require 'Mouse/PurePerl.pm'; # we don't want to create its namespace
75 }
76
77 *MOUSE_XS = sub(){ $xs };
78126µs11.51ms}
# spent 1.51ms making 1 call to Mouse::Util::BEGIN@20
79
80224µs17µs
# spent 7µs within Mouse::Util::BEGIN@80 which was called: # once (7µs+0s) by Mouse::BEGIN@4 at line 80
use Carp ();
# spent 7µs making 1 call to Mouse::Util::BEGIN@80
812281µs16µs
# spent 6µs within Mouse::Util::BEGIN@81 which was called: # once (6µs+0s) by Mouse::BEGIN@4 at line 81
use Scalar::Util ();
# spent 6µs making 1 call to Mouse::Util::BEGIN@81
82
83# aliases as public APIs
84# it must be 'require', not 'use', because Mouse::Meta::Module depends on Mouse::Util
85190µsrequire Mouse::Meta::Module; # for the entities of metaclass cache utilities
86
87# aliases
88{
8923µs *class_of = \&Mouse::Meta::Module::_class_of;
9011µs *get_metaclass_by_name = \&Mouse::Meta::Module::_get_metaclass_by_name;
9111µs *get_all_metaclass_instances = \&Mouse::Meta::Module::_get_all_metaclass_instances;
9211µs *get_all_metaclass_names = \&Mouse::Meta::Module::_get_all_metaclass_names;
93
9411µs *Mouse::load_class = \&load_class;
9511µs *Mouse::is_class_loaded = \&is_class_loaded;
96
97 # is-a predicates
98 #generate_isa_predicate_for('Mouse::Meta::TypeConstraint' => 'is_a_type_constraint');
99 #generate_isa_predicate_for('Mouse::Meta::Class' => 'is_a_metaclass');
100 #generate_isa_predicate_for('Mouse::Meta::Role' => 'is_a_metarole');
101
102 # duck type predicates
103118µs112µs generate_can_predicate_for(['_compiled_type_constraint'] => 'is_a_type_constraint');
# spent 12µs making 1 call to Mouse::Util::generate_can_predicate_for
10418µs14µs generate_can_predicate_for(['create_anon_class'] => 'is_a_metaclass');
# spent 4µs making 1 call to Mouse::Util::generate_can_predicate_for
10518µs13µs generate_can_predicate_for(['create_anon_role'] => 'is_a_metarole');
# spent 3µs making 1 call to Mouse::Util::generate_can_predicate_for
106}
107
10811µsour $in_global_destruction = 0;
10915µs
# spent 4µs within Mouse::Util::END which was called: # once (4µs+0s) by main::RUNTIME at line 0 of reply.pl
END{ $in_global_destruction = 1 }
110
111# Moose::Util compatible utilities
112
113sub find_meta{
114 return class_of( $_[0] );
115}
116
117
# spent 303µs (49+254) within Mouse::Util::does_role which was called 3 times, avg 101µs/call: # 3 times (49µs+254µs) by Mouse::Util::TypeConstraints::__ANON__[/home/hinrik/perl5/perlbrew/perls/perl-5.13.5/lib/site_perl/5.13.5/x86_64-linux/Mouse/Util/TypeConstraints.pm:217] at line 215 of Mouse/Util/TypeConstraints.pm, avg 101µs/call
sub does_role{
1181245µs my ($class_or_obj, $role_name) = @_;
119
120320µs my $meta = class_of($class_or_obj);
# spent 20µs making 3 calls to Mouse::Meta::Module::_class_of, avg 7µs/call
121
122 (defined $role_name)
123 || ($meta || 'Mouse::Meta::Class')->throw_error("You must supply a role name to does()");
124
1253234µs return defined($meta) && $meta->does_role($role_name);
# spent 234µs making 3 calls to Mouse::Meta::Class::does_role, avg 78µs/call
126}
127
128
# spent 541µs (318+222) within Mouse::Util::BEGIN@128 which was called: # once (318µs+222µs) by Mouse::BEGIN@4 at line 179
BEGIN {
1295150µs my $get_linear_isa;
130 if ($] >= 5.009_005) {
131 require mro;
132 $get_linear_isa = \&mro::get_linear_isa;
133 } else {
134 # this code is based on MRO::Compat::__get_linear_isa
135 my $_get_linear_isa_dfs; # this recurses so it isn't pretty
136 $_get_linear_isa_dfs = sub {
137 my($classname) = @_;
138
139 my @lin = ($classname);
140 my %stored;
141
1422194µs261µs
# spent 36µs (11+25) within Mouse::Util::BEGIN@142 which was called: # once (11µs+25µs) by Mouse::BEGIN@4 at line 142
no strict 'refs';
# spent 36µs making 1 call to Mouse::Util::BEGIN@142 # spent 25µs making 1 call to strict::unimport
143 foreach my $parent (@{"$classname\::ISA"}) {
144 foreach my $p(@{ $_get_linear_isa_dfs->($parent) }) {
145 next if exists $stored{$p};
146 push(@lin, $p);
147 $stored{$p} = 1;
148 }
149 }
150 return \@lin;
151 };
152
153 {
154 package # hide from PAUSE
155 Class::C3;
156 our %MRO; # avoid 'once' warnings
157 }
158
159 # MRO::Compat::__get_linear_isa has no prototype, so
160 # we define a prototyped version for compatibility with core's
161 # See also MRO::Compat::__get_linear_isa.
162 $get_linear_isa = sub ($;$){
163 my($classname, $type) = @_;
164
165 if(!defined $type){
166 $type = exists $Class::C3::MRO{$classname} ? 'c3' : 'dfs';
167 }
168 if($type eq 'c3'){
169 require Class::C3;
170 return [Class::C3::calculateMRO($classname)];
171 }
172 else{
173 return $_get_linear_isa_dfs->($classname);
174 }
175 };
176 }
177
178 *get_linear_isa = $get_linear_isa;
1791811µs1541µs}
# spent 541µs making 1 call to Mouse::Util::BEGIN@128
180
181
182# taken from Mouse::Util (0.90)
183{
18423µs my %cache;
185
186 sub resolve_metaclass_alias {
187 my ( $type, $metaclass_name, %options ) = @_;
188
189 my $cache_key = $type . q{ } . ( $options{trait} ? '-Trait' : '' );
190
191 return $cache{$cache_key}{$metaclass_name} ||= do{
192
193 my $possible_full_name = join '::',
194 'Mouse::Meta', $type, 'Custom', ($options{trait} ? 'Trait' : ()), $metaclass_name
195 ;
196
197 my $loaded_class = load_first_existing_class(
198 $possible_full_name,
199 $metaclass_name
200 );
201
202 $loaded_class->can('register_implementation')
203 ? $loaded_class->register_implementation
204 : $loaded_class;
205 };
206 }
207}
208
209# Utilities from Class::MOP
210
211sub get_code_info;
212sub get_code_package;
213
214sub is_valid_class_name;
215
216# taken from Class/MOP.pm
217sub load_first_existing_class {
218 my @classes = @_
219 or return;
220
221 my %exceptions;
222 for my $class (@classes) {
223 my $e = _try_load_one_class($class);
224
225 if ($e) {
226 $exceptions{$class} = $e;
227 }
228 else {
229 return $class;
230 }
231 }
232
233 # not found
234 Carp::confess join(
235 "\n",
236 map {
237 sprintf( "Could not load class (%s) because : %s",
238 $_, $exceptions{$_} )
239 } @classes
240 );
241}
242
243# taken from Class/MOP.pm
244
# spent 51.4ms (3.10+48.3) within Mouse::Util::_try_load_one_class which was called 22 times, avg 2.34ms/call: # 22 times (3.10ms+48.3ms) by Mouse::Util::load_class at line 267, avg 2.34ms/call
sub _try_load_one_class {
2451011.24ms my $class = shift;
246
2472239µs unless ( is_valid_class_name($class) ) {
# spent 39µs making 22 calls to Mouse::Util::is_valid_class_name, avg 2µs/call
248 my $display = defined($class) ? $class : 'undef';
249 Carp::confess "Invalid class name ($display)";
250 }
251
2522279µs return '' if is_class_loaded($class);
# spent 79µs making 22 calls to Mouse::Util::is_class_loaded, avg 4µs/call
253
254527µs $class =~ s{::}{/}g;
# spent 27µs making 5 calls to Mouse::Util::CORE:subst, avg 5µs/call
255 $class .= '.pm';
256
257 return do {
258 local $@;
259 eval { require $class };
260 $@;
261 };
262}
263
264
265
# spent 51.6ms (231µs+51.4) within Mouse::Util::load_class which was called 22 times, avg 2.35ms/call: # 6 times (68µs+30.1ms) by Mouse::Util::apply_all_roles at line 292, avg 5.04ms/call # 6 times (65µs+21.1ms) by Mouse::Meta::Class::superclasses at line 58 of Mouse/Meta/Class.pm, avg 3.54ms/call # 5 times (55µs+62µs) by Mouse::Meta::Class::make_immutable at line 290 of Mouse/Meta/Class.pm, avg 23µs/call # 5 times (43µs+44µs) by Mouse::Meta::Class::make_immutable at line 296 of Mouse/Meta/Class.pm, avg 17µs/call
sub load_class {
26688228µs my $class = shift;
2672251.4ms my $e = _try_load_one_class($class);
# spent 51.5ms making 22 calls to Mouse::Util::_try_load_one_class, avg 2.34ms/call, recursion: max depth 1, sum of overlapping time 46µs
268 Carp::confess "Could not load class ($class) because : $e" if $e;
269
270 return $class;
271}
272
273sub is_class_loaded;
274
275
# spent 43.9ms (295µs+43.6) within Mouse::Util::apply_all_roles which was called 3 times, avg 14.6ms/call: # 3 times (295µs+43.6ms) by Mouse::with at line 40 of Mouse.pm, avg 14.6ms/call
sub apply_all_roles {
27678306µs629µs my $consumer = Scalar::Util::blessed($_[0])
# spent 24µs making 3 calls to Mouse::Meta::Module::initialize, avg 8µs/call # spent 5µs making 3 calls to Scalar::Util::blessed, avg 2µs/call
277 ? $_[0] # instance
278 : Mouse::Meta::Class->initialize($_[0]); # class or role name
279
280 my @roles;
281
282 # Basis of Data::OptList
283 my $max = scalar(@_);
284 for (my $i = 1; $i < $max ; $i++) {
285 my $role = $_[$i];
286 my $role_name;
287 if(ref $role) {
288 $role_name = $role->name;
289 }
290 else {
291 $role_name = $role;
292630.2ms load_class($role_name);
# spent 30.2ms making 6 calls to Mouse::Util::load_class, avg 5.04ms/call
293626µs $role = get_metaclass_by_name($role_name);
# spent 26µs making 6 calls to Mouse::Meta::Module::_get_metaclass_by_name, avg 4µs/call
294 }
295
296 if ($i + 1 < $max && ref($_[$i + 1]) eq 'HASH') {
297 push @roles, [ $role => $_[++$i] ];
298 } else {
299 push @roles, [ $role => undef ];
300 }
301626µs is_a_metarole($role)
# spent 26µs making 6 calls to Mouse::Util::is_a_metarole, avg 4µs/call
302 || $consumer->meta->throw_error("You can only consume roles, $role_name is not a Mouse role");
303 }
304
305 if ( scalar @roles == 1 ) {
306 my ( $role, $params ) = @{ $roles[0] };
307 $role->apply( $consumer, defined $params ? $params : () );
308 }
309 else {
310613.3ms Mouse::Meta::Role->combine(@roles)->apply($consumer);
# spent 7.76ms making 3 calls to Mouse::Meta::Role::combine, avg 2.59ms/call # spent 5.59ms making 3 calls to Mouse::Meta::Role::Composite::apply, avg 1.86ms/call
311 }
312 return;
313}
314
315# taken from Moose::Util 0.90
316sub english_list {
317 return $_[0] if @_ == 1;
318
319 my @items = sort @_;
320
321 return "$items[0] and $items[1]" if @items == 2;
322
323 my $tail = pop @items;
324
325 return join q{, }, @items, "and $tail";
326}
327
328sub quoted_english_list {
329 return english_list(map { qq{'$_'} } @_);
330}
331
332# common utilities
333
334sub not_supported{
335 my($feature) = @_;
336
337 $feature ||= ( caller(1) )[3] . '()'; # subroutine name
338
339 local $Carp::CarpLevel = $Carp::CarpLevel + 1;
340 Carp::confess("Mouse does not currently support $feature");
341}
342
343# general meta() method
344
# spent 142µs (57+85) within Mouse::Util::meta which was called 6 times, avg 24µs/call: # 3 times (37µs+46µs) by Mouse::Meta::Role::_construct_meta at line 20 of Mouse/Meta/Role.pm, avg 28µs/call # 3 times (20µs+39µs) by Mouse::Meta::Role::Application::new at line 36 of Mouse/Meta/Role/Application.pm, avg 20µs/call
sub meta :method{
345644µs639µs return Mouse::Meta::Class->initialize(ref($_[0]) || $_[0]);
# spent 85µs making 6 calls to Mouse::Meta::Module::initialize, avg 14µs/call, recursion: max depth 1, sum of overlapping time 46µs
346}
347
348# general throw_error() method
349# $o->throw_error($msg, depth => $leve, longmess => $croak_or_confess)
350sub throw_error :method {
351 my($self, $message, %args) = @_;
352
353 local $Carp::CarpLevel = $Carp::CarpLevel + 1 + ($args{depth} || 0);
354 local $Carp::MaxArgNums = 20; # default is 8, usually we use named args which gets messier though
355
356 if(exists $args{longmess} && !$args{longmess}) {
357 Carp::croak($message);
358 }
359 else{
360 Carp::confess($message);
361 }
362}
363
364# general dump() method
365sub dump :method {
366 my($self, $maxdepth) = @_;
367
368 require 'Data/Dumper.pm'; # we don't want to create its namespace
369 my $dd = Data::Dumper->new([$self]);
370 $dd->Maxdepth(defined($maxdepth) ? $maxdepth : 3);
371 $dd->Indent(1);
372 $dd->Sortkeys(1);
373 $dd->Quotekeys(0);
374 return $dd->Dump();
375}
376
377# general does() method
378sub does :method {
379 goto &does_role;
380}
381
38219µs1;
383__END__
 
# spent 35µs within Mouse::Util::CORE:subst which was called 6 times, avg 6µs/call: # 5 times (27µs+0s) by Mouse::Util::_try_load_one_class at line 254, avg 5µs/call # once (8µs+0s) by Mouse::Util::BEGIN@20 at line 60
sub Mouse::Util::CORE:subst; # opcode
# spent 2µs within Mouse::Util::__register_metaclass_storage which was called: # once (2µs+0s) by Mouse::BEGIN@4 at line 11 of Mouse/Meta/Module.pm
sub Mouse::Util::__register_metaclass_storage; # xsub
# spent 19µs within Mouse::Util::generate_can_predicate_for which was called 3 times, avg 6µs/call: # once (12µs+0s) by Mouse::BEGIN@4 at line 103 # once (4µs+0s) by Mouse::BEGIN@4 at line 104 # once (3µs+0s) by Mouse::BEGIN@4 at line 105
sub Mouse::Util::generate_can_predicate_for; # xsub
# spent 32µs within Mouse::Util::generate_isa_predicate_for which was called 6 times, avg 5µs/call: # 6 times (32µs+0s) by Mouse::Util::TypeConstraints::class_type at line 200 of Mouse/Util/TypeConstraints.pm, avg 5µs/call
sub Mouse::Util::generate_isa_predicate_for; # xsub
# spent 9µs within Mouse::Util::get_code_info which was called 4 times, avg 2µs/call: # 4 times (9µs+0s) by Mouse::Exporter::build_import_methods at line 91 of Mouse/Exporter.pm, avg 2µs/call
sub Mouse::Util::get_code_info; # xsub
# spent 12µs within Mouse::Util::get_code_package which was called 6 times, avg 2µs/call: # 6 times (12µs+0s) by Mouse::Meta::Module::_get_method_body at line 90 of Mouse/Meta/Module.pm, avg 2µs/call
sub Mouse::Util::get_code_package; # xsub
# spent 291µs within Mouse::Util::get_code_ref which was called 134 times, avg 2µs/call: # 134 times (291µs+0s) by Mouse::Meta::Module::_get_method_body at line 89 of Mouse/Meta/Module.pm, avg 2µs/call
sub Mouse::Util::get_code_ref; # xsub
# spent 30µs within Mouse::Util::is_a_metaclass which was called 9 times, avg 3µs/call: # 9 times (30µs+0s) by Mouse::Meta::Role::Application::apply at line 46 of Mouse/Meta/Role/Application.pm, avg 3µs/call
sub Mouse::Util::is_a_metaclass; # xsub
# spent 45µs within Mouse::Util::is_a_metarole which was called 13 times, avg 3µs/call: # 6 times (26µs+0s) by Mouse::Util::apply_all_roles at line 301, avg 4µs/call # 6 times (9µs+0s) by Mouse::Meta::Role::Application::apply at line 46 of Mouse/Meta/Role/Application.pm, avg 2µs/call # once (10µs+0s) by Mouse::Meta::Class::verify_superclass at line 72 of Mouse/Meta/Class.pm
sub Mouse::Util::is_a_metarole; # xsub
# spent 108µs within Mouse::Util::is_a_type_constraint which was called 59 times, avg 2µs/call: # 46 times (85µs+0s) by Mouse::Util::TypeConstraints::find_or_parse_type_constraint at line 394 of Mouse/Util/TypeConstraints.pm, avg 2µs/call # 13 times (23µs+0s) by Mouse::Util::TypeConstraints::find_type_constraint at line 376 of Mouse/Util/TypeConstraints.pm, avg 2µs/call
sub Mouse::Util::is_a_type_constraint; # xsub
# spent 79µs within Mouse::Util::is_class_loaded which was called 22 times, avg 4µs/call: # 22 times (79µs+0s) by Mouse::Util::_try_load_one_class at line 252, avg 4µs/call
sub Mouse::Util::is_class_loaded; # xsub
# spent 39µs within Mouse::Util::is_valid_class_name which was called 22 times, avg 2µs/call: # 22 times (39µs+0s) by Mouse::Util::_try_load_one_class at line 247, avg 2µs/call
sub Mouse::Util::is_valid_class_name; # xsub