← Index
NYTProf Performance Profile   « line view »
For ../prof.pl
  Run on Wed Dec 14 15:57:08 2022
Reported on Wed Dec 14 16:00:30 2022

Filename/Users/ether/.perlbrew/libs/36.0@std/lib/perl5/Moo/Object.pm
StatementsExecuted 153 statements in 1.01ms
Subroutines
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
2122211µs305µsMoo::Object::::newMoo::Object::new
244491µs91µsMoo::Object::::BUILDARGSMoo::Object::BUILDARGS
11144µs48µsMoo::Object::::BEGIN@2Moo::Object::BEGIN@2
11132µs34µsMoo::Object::::doesMoo::Object::does
1119µs46µsMoo::Object::::BEGIN@3Moo::Object::BEGIN@3
1117µs26µsMoo::Object::::BEGIN@67Moo::Object::BEGIN@67
1115µs5µ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µs252µs
# spent 48µs (44+4) within Moo::Object::BEGIN@2 which was called: # once (44µs+4µs) by Moo::make_class at line 2
use strict;
# spent 48µs making 1 call to Moo::Object::BEGIN@2 # spent 4µs making 1 call to strict::import
3238µs283µs
# spent 46µs (9+37) within Moo::Object::BEGIN@3 which was called: # once (9µs+37µs) by Moo::make_class at line 3
use warnings;
# spent 46µs making 1 call to Moo::Object::BEGIN@3 # spent 37µs making 1 call to warnings::import
4
52387µs15µs
# spent 5µs within Moo::Object::BEGIN@5 which was called: # once (5µs+0s) by Moo::make_class at line 5
use Carp ();
# spent 5µ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 305µs (211+94) within Moo::Object::new which was called 21 times, avg 15µs/call: # 18 times (164µs+73µs) by Moo::_accessor_maker_for at line 197 of Moo.pm, avg 13µs/call # 3 times (47µs+21µs) by Method::Generate::Constructor::buildall_generator at line 62 of Method/Generate/Constructor.pm, avg 23µs/call
sub new {
13219µs my $class = shift;
142120µs unless (exists $NO_DEMOLISH{$class}) {
15240µs28µs unless ($NO_DEMOLISH{$class} = !$class->can('DEMOLISH')) {
# spent 8µs making 2 calls to UNIVERSAL::can, avg 4µs/call
16 ($DEMOLISH_MAKER ||= do {
17 require Method::Generate::DemolishAll;
18 Method::Generate::DemolishAll->new
19 })->generate_method($class);
20 }
21 }
222157µs2181µs my $proto = $class->BUILDARGS(@_);
# spent 81µs making 21 calls to Moo::Object::BUILDARGS, avg 4µs/call
232184µs $NO_BUILD{$class} and
24 return bless({}, $class);
25212µs25µs $NO_BUILD{$class} = !$class->can('BUILD') unless exists $NO_BUILD{$class};
# spent 5µs making 2 calls to UNIVERSAL::can, avg 2µs/call
26210µ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 91µs within Moo::Object::BUILDARGS which was called 24 times, avg 4µs/call: # 21 times (81µs+0s) by Moo::Object::new at line 22, avg 4µs/call # once (5µ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 (4µ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 (1µs+0s) by Method::Generate::Constructor::new at line 248 of Method/Generate/Constructor.pm
sub BUILDARGS {
33248µs my $class = shift;
34 scalar @_ == 1
35 ? ref $_[0] eq 'HASH'
3624116µ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 34µs (32+2) within Moo::Object::does which was called: # once (32µs+2µ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
6413µs unless ($INC{'Moose/Role.pm'} || $INC{'Role/Tiny.pm'});
6511µs require Moo::Role;
66113µs12µs my $does = Moo::Role->can("does_role");
# spent 2µs making 1 call to UNIVERSAL::can
674165µs245µs
# spent 26µs (7+19) within Moo::Object::BEGIN@67 which was called: # once (7µs+19µs) by Moo::make_class at line 67
{ no warnings 'redefine'; *does = $does }
# spent 26µs making 1 call to Moo::Object::BEGIN@67 # spent 19µs making 1 call to warnings::unimport
6817µs123µs goto &$does;
# spent 23µ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
7815µs1;