← Index
NYTProf Performance Profile   « line view »
For ../prof.pl
  Run on Wed Dec 14 16:10:05 2022
Reported on Wed Dec 14 16:12:56 2022

Filename/Users/ether/.perlbrew/libs/36.0@std/lib/perl5/Moo/Object.pm
StatementsExecuted 153 statements in 788µs
Subroutines
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
2122211µs279µsMoo::Object::::newMoo::Object::new
244469µs69µsMoo::Object::::BUILDARGSMoo::Object::BUILDARGS
11123µs25µsMoo::Object::::BEGIN@2Moo::Object::BEGIN@2
11116µs18µsMoo::Object::::doesMoo::Object::does
1114µs20µsMoo::Object::::BEGIN@3Moo::Object::BEGIN@3
1114µs18µsMoo::Object::::BEGIN@67Moo::Object::BEGIN@67
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;
2224µs227µs
# spent 25µs (23+2) within Moo::Object::BEGIN@2 which was called: # once (23µs+2µs) by Moo::make_class at line 2
use strict;
# spent 25µs making 1 call to Moo::Object::BEGIN@2 # spent 2µs making 1 call to strict::import
3212µs236µs
# spent 20µs (4+16) within Moo::Object::BEGIN@3 which was called: # once (4µs+16µs) by Moo::make_class at line 3
use warnings;
# spent 20µs making 1 call to Moo::Object::BEGIN@3 # spent 16µs making 1 call to warnings::import
4
52248µ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 279µs (211+68) within Moo::Object::new which was called 21 times, avg 13µs/call: # 18 times (173µs+53µs) by Moo::_accessor_maker_for at line 197 of Moo.pm, avg 13µs/call # 3 times (38µs+15µs) by Method::Generate::Constructor::buildall_generator at line 62 of Method/Generate/Constructor.pm, avg 18µs/call
sub new {
13215µs my $class = shift;
142113µs unless (exists $NO_DEMOLISH{$class}) {
15224µs27µs unless ($NO_DEMOLISH{$class} = !$class->can('DEMOLISH')) {
# spent 7µ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 }
222183µs2159µs my $proto = $class->BUILDARGS(@_);
# spent 59µs making 21 calls to Moo::Object::BUILDARGS, avg 3µs/call
232176µs $NO_BUILD{$class} and
24 return bless({}, $class);
25210µs22µs $NO_BUILD{$class} = !$class->can('BUILD') unless exists $NO_BUILD{$class};
# spent 2µs making 2 calls to UNIVERSAL::can, avg 1µs/call
2629µ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 69µs within Moo::Object::BUILDARGS which was called 24 times, avg 3µs/call: # 21 times (59µs+0s) by Moo::Object::new at line 22, avg 3µ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 (3µ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 (2µs+0s) by Method::Generate::Constructor::new at line 248 of Method/Generate/Constructor.pm
sub BUILDARGS {
33247µs my $class = shift;
34 scalar @_ == 1
35 ? ref $_[0] eq 'HASH'
3624107µ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 18µs (16+2) within Moo::Object::does which was called: # once (16µ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
6412µs unless ($INC{'Moose/Role.pm'} || $INC{'Role/Tiny.pm'});
6511µs require Moo::Role;
6617µs12µs my $does = Moo::Role->can("does_role");
# spent 2µs making 1 call to UNIVERSAL::can
674152µs232µs
# spent 18µs (4+14) within Moo::Object::BEGIN@67 which was called: # once (4µs+14µs) by Moo::make_class at line 67
{ no warnings 'redefine'; *does = $does }
# spent 18µs making 1 call to Moo::Object::BEGIN@67 # spent 14µs making 1 call to warnings::unimport
6815µs124µs goto &$does;
# spent 24µ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;