Filename | /Users/ether/.perlbrew/libs/36.0@std/lib/perl5/Moo/Object.pm |
Statements | Executed 153 statements in 940µs |
Calls | P | F | Exclusive Time |
Inclusive Time |
Subroutine |
---|---|---|---|---|---|
21 | 2 | 2 | 233µs | 323µs | new | Moo::Object::
24 | 4 | 4 | 98µs | 98µs | BUILDARGS | Moo::Object::
1 | 1 | 1 | 34µs | 37µs | BEGIN@2 | Moo::Object::
1 | 1 | 1 | 19µs | 20µs | does | Moo::Object::
1 | 1 | 1 | 8µs | 22µs | BEGIN@67 | Moo::Object::
1 | 1 | 1 | 6µs | 33µs | BEGIN@3 | Moo::Object::
1 | 1 | 1 | 2µs | 2µs | BEGIN@5 | Moo::Object::
0 | 0 | 0 | 0s | 0s | BUILDALL | Moo::Object::
0 | 0 | 0 | 0s | 0s | DEMOLISHALL | Moo::Object::
0 | 0 | 0 | 0s | 0s | meta | Moo::Object::
Line | State ments |
Time on line |
Calls | Time in subs |
Code |
---|---|---|---|---|---|
1 | package Moo::Object; | ||||
2 | 2 | 40µs | 2 | 40µs | # spent 37µs (34+3) within Moo::Object::BEGIN@2 which was called:
# once (34µs+3µs) by Moo::make_class at line 2 # spent 37µs making 1 call to Moo::Object::BEGIN@2
# spent 3µs making 1 call to strict::import |
3 | 2 | 22µs | 2 | 60µs | # spent 33µs (6+27) within Moo::Object::BEGIN@3 which was called:
# once (6µs+27µs) by Moo::make_class at line 3 # spent 33µs making 1 call to Moo::Object::BEGIN@3
# spent 27µs making 1 call to warnings::import |
4 | |||||
5 | 2 | 344µs | 1 | 2µs | # spent 2µs within Moo::Object::BEGIN@5 which was called:
# once (2µs+0s) by Moo::make_class at line 5 # spent 2µs making 1 call to Moo::Object::BEGIN@5 |
6 | |||||
7 | our %NO_BUILD; | ||||
8 | our %NO_DEMOLISH; | ||||
9 | our $BUILD_MAKER; | ||||
10 | our $DEMOLISH_MAKER; | ||||
11 | |||||
12 | # spent 323µs (233+90) within Moo::Object::new which was called 21 times, avg 15µs/call:
# 18 times (153µs+68µs) by Moo::_accessor_maker_for at line 197 of Moo.pm, avg 12µs/call
# 3 times (80µs+22µs) by Method::Generate::Constructor::buildall_generator at line 62 of Method/Generate/Constructor.pm, avg 34µs/call | ||||
13 | 21 | 8µs | my $class = shift; | ||
14 | 21 | 31µs | unless (exists $NO_DEMOLISH{$class}) { | ||
15 | 2 | 25µs | 2 | 6µs | unless ($NO_DEMOLISH{$class} = !$class->can('DEMOLISH')) { # spent 6µs making 2 calls to UNIVERSAL::can, avg 3µs/call |
16 | ($DEMOLISH_MAKER ||= do { | ||||
17 | require Method::Generate::DemolishAll; | ||||
18 | Method::Generate::DemolishAll->new | ||||
19 | })->generate_method($class); | ||||
20 | } | ||||
21 | } | ||||
22 | 21 | 55µs | 21 | 80µs | my $proto = $class->BUILDARGS(@_); # spent 80µs making 21 calls to Moo::Object::BUILDARGS, avg 4µs/call |
23 | 21 | 95µs | $NO_BUILD{$class} and | ||
24 | return bless({}, $class); | ||||
25 | 2 | 10µs | 2 | 4µs | $NO_BUILD{$class} = !$class->can('BUILD') unless exists $NO_BUILD{$class}; # spent 4µs making 2 calls to UNIVERSAL::can, avg 2µs/call |
26 | 2 | 11µs | $NO_BUILD{$class} | ||
27 | ? bless({}, $class) | ||||
28 | : bless({}, $class)->BUILDALL($proto); | ||||
29 | } | ||||
30 | |||||
31 | # Inlined into Method::Generate::Constructor::_generate_args() - keep in sync | ||||
32 | # spent 98µs within Moo::Object::BUILDARGS which was called 24 times, avg 4µs/call:
# 21 times (80µs+0s) by Moo::Object::new at line 22, avg 4µs/call
# once (10µs+0s) by OpenAPI::Modern::__ANON__[/Users/ether/.perlbrew/libs/36.0@std/lib/perl5/OpenAPI/Modern.pm:79] at line 55 of OpenAPI/Modern.pm
# once (5µs+0s) by JSON::Schema::Modern::__ANON__[/Users/ether/.perlbrew/libs/36.0@std/lib/perl5/JSON/Schema/Modern.pm:133] at line 127 of JSON/Schema/Modern.pm
# once (3µs+0s) by Method::Generate::Constructor::new at line 248 of Method/Generate/Constructor.pm | ||||
33 | 24 | 12µs | my $class = shift; | ||
34 | scalar @_ == 1 | ||||
35 | ? ref $_[0] eq 'HASH' | ||||
36 | 24 | 135µs | ? { %{ $_[0] } } | ||
37 | : Carp::croak("Single parameters to new() must be a HASH ref" | ||||
38 | . " data => ". $_[0]) | ||||
39 | : @_ % 2 | ||||
40 | ? Carp::croak("The new() method for $class expects a hash reference or a" | ||||
41 | . " key/value list. You passed an odd number of arguments") | ||||
42 | : {@_} | ||||
43 | ; | ||||
44 | } | ||||
45 | |||||
46 | sub BUILDALL { | ||||
47 | my $self = shift; | ||||
48 | $self->${\(($BUILD_MAKER ||= do { | ||||
49 | require Method::Generate::BuildAll; | ||||
50 | Method::Generate::BuildAll->new | ||||
51 | })->generate_method(ref($self)))}(@_); | ||||
52 | } | ||||
53 | |||||
54 | sub DEMOLISHALL { | ||||
55 | my $self = shift; | ||||
56 | $self->${\(($DEMOLISH_MAKER ||= do { | ||||
57 | require Method::Generate::DemolishAll; | ||||
58 | Method::Generate::DemolishAll->new | ||||
59 | })->generate_method(ref($self)))}(@_); | ||||
60 | } | ||||
61 | |||||
62 | # spent 20µs (19+1) within Moo::Object::does which was called:
# once (19µs+1µs) by MooX::TypeTiny::__ANON__[/Users/ether/.perlbrew/libs/36.0@std/lib/perl5/MooX/TypeTiny.pm:25] at line 21 of MooX/TypeTiny.pm | ||||
63 | return !!0 | ||||
64 | 1 | 1µs | unless ($INC{'Moose/Role.pm'} || $INC{'Role/Tiny.pm'}); | ||
65 | 1 | 1µs | require Moo::Role; | ||
66 | 1 | 10µs | 1 | 1µs | my $does = Moo::Role->can("does_role"); # spent 1µs making 1 call to UNIVERSAL::can |
67 | 4 | 130µs | 2 | 36µs | # spent 22µs (8+14) within Moo::Object::BEGIN@67 which was called:
# once (8µs+14µs) by Moo::make_class at line 67 # spent 22µs making 1 call to Moo::Object::BEGIN@67
# spent 14µs making 1 call to warnings::unimport |
68 | 1 | 7µs | 1 | 22µs | goto &$does; # spent 22µs making 1 call to Moo::Role::does_role |
69 | } | ||||
70 | |||||
71 | # duplicated in Moo::Role | ||||
72 | sub meta { | ||||
73 | require Moo::HandleMoose::FakeMetaClass; | ||||
74 | my $class = ref($_[0])||$_[0]; | ||||
75 | bless({ name => $class }, 'Moo::HandleMoose::FakeMetaClass'); | ||||
76 | } | ||||
77 | |||||
78 | 1 | 3µs | 1; |