← 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:02 2022

Filename/Users/ether/.perlbrew/libs/36.0@std/lib/perl5/Moo/Object.pm
StatementsExecuted 153 statements in 940µs
Subroutines
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
2122233µs323µsMoo::Object::::newMoo::Object::new
244498µs98µsMoo::Object::::BUILDARGSMoo::Object::BUILDARGS
11134µs37µsMoo::Object::::BEGIN@2Moo::Object::BEGIN@2
11119µs20µsMoo::Object::::doesMoo::Object::does
1118µs22µsMoo::Object::::BEGIN@67Moo::Object::BEGIN@67
1116µs33µsMoo::Object::::BEGIN@3Moo::Object::BEGIN@3
1112µs2µsMoo::Object::::BEGIN@5Moo::Object::BEGIN@5
0000s0sMoo::Object::::BUILDALLMoo::Object::BUILDALL
0000s0sMoo::Object::::DEMOLISHALLMoo::Object::DEMOLISHALL
0000s0sMoo::Object::::metaMoo::Object::meta
Call graph for these subroutines as a Graphviz dot language file.
Line State
ments
Time
on line
Calls Time
in subs
Code
1package Moo::Object;
2240µs240µ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
use strict;
# spent 37µs making 1 call to Moo::Object::BEGIN@2 # spent 3µs making 1 call to strict::import
3222µs260µ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
use warnings;
# spent 33µs making 1 call to Moo::Object::BEGIN@3 # spent 27µs making 1 call to warnings::import
4
52344µs12µs
# spent 2µs within Moo::Object::BEGIN@5 which was called: # once (2µs+0s) by Moo::make_class at line 5
use Carp ();
# spent 2µs making 1 call to Moo::Object::BEGIN@5
6
7our %NO_BUILD;
8our %NO_DEMOLISH;
9our $BUILD_MAKER;
10our $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
sub new {
13218µs my $class = shift;
142131µs unless (exists $NO_DEMOLISH{$class}) {
15225µs26µ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 }
222155µs2180µs my $proto = $class->BUILDARGS(@_);
# spent 80µs making 21 calls to Moo::Object::BUILDARGS, avg 4µs/call
232195µs $NO_BUILD{$class} and
24 return bless({}, $class);
25210µs24µ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
26211µ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
sub BUILDARGS {
332412µs my $class = shift;
34 scalar @_ == 1
35 ? ref $_[0] eq 'HASH'
3624135µ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
46sub 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
54sub 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
sub does {
63 return !!0
6411µs unless ($INC{'Moose/Role.pm'} || $INC{'Role/Tiny.pm'});
6511µs require Moo::Role;
66110µs11µs my $does = Moo::Role->can("does_role");
# spent 1µs making 1 call to UNIVERSAL::can
674130µs236µ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
{ no warnings 'redefine'; *does = $does }
# spent 22µs making 1 call to Moo::Object::BEGIN@67 # spent 14µs making 1 call to warnings::unimport
6817µs122µs goto &$does;
# spent 22µs making 1 call to Moo::Role::does_role
69}
70
71# duplicated in Moo::Role
72sub meta {
73 require Moo::HandleMoose::FakeMetaClass;
74 my $class = ref($_[0])||$_[0];
75 bless({ name => $class }, 'Moo::HandleMoose::FakeMetaClass');
76}
77
7813µs1;