← Index
NYTProf Performance Profile   « line view »
For fastest.pl
  Run on Fri Jan 31 20:48:16 2014
Reported on Fri Jan 31 20:49:40 2014

Filename/opt/perl-5.18.1/lib/site_perl/5.18.1/darwin-thread-multi-2level/Class/MOP/Method/Constructor.pm
StatementsExecuted 896 statements in 3.76ms
Subroutines
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
31221.28ms81.9msClass::MOP::Method::Constructor::::_generate_constructor_method_inlineClass::MOP::Method::Constructor::_generate_constructor_method_inline
3011712µs81.0msClass::MOP::Method::Constructor::::newClass::MOP::Method::Constructor::new
3011267µs267µsClass::MOP::Method::Constructor::::_newClass::MOP::Method::Constructor::_new
3011235µs79.9msClass::MOP::Method::Constructor::::_initialize_bodyClass::MOP::Method::Constructor::_initialize_body
3111198µs12.3msClass::MOP::Method::Constructor::::_eval_environmentClass::MOP::Method::Constructor::_eval_environment
11112µs12µsClass::MOP::Method::Constructor::::BEGIN@3Class::MOP::Method::Constructor::BEGIN@3
11110µs53µsClass::MOP::Method::Constructor::::BEGIN@15Class::MOP::Method::Constructor::BEGIN@15
11110µs1.05msClass::MOP::Method::Constructor::::BEGIN@17Class::MOP::Method::Constructor::BEGIN@17
11110µs15µsClass::MOP::Method::Constructor::::BEGIN@11Class::MOP::Method::Constructor::BEGIN@11
1119µs25µsClass::MOP::Method::Constructor::::BEGIN@10Class::MOP::Method::Constructor::BEGIN@10
1119µs40µsClass::MOP::Method::Constructor::::BEGIN@13Class::MOP::Method::Constructor::BEGIN@13
1119µs42µsClass::MOP::Method::Constructor::::BEGIN@14Class::MOP::Method::Constructor::BEGIN@14
0000s0sClass::MOP::Method::Constructor::::__ANON__[:111]Class::MOP::Method::Constructor::__ANON__[:111]
0000s0sClass::MOP::Method::Constructor::::__ANON__[:115]Class::MOP::Method::Constructor::__ANON__[:115]
0000s0sClass::MOP::Method::Constructor::::__ANON__[:93]Class::MOP::Method::Constructor::__ANON__[:93]
0000s0sClass::MOP::Method::Constructor::::_generate_constructor_methodClass::MOP::Method::Constructor::_generate_constructor_method
Call graph for these subroutines as a Graphviz dot language file.
Line State
ments
Time
on line
Calls Time
in subs
Code
1
2package Class::MOP::Method::Constructor;
3
# spent 12µs within Class::MOP::Method::Constructor::BEGIN@3 which was called: # once (12µs+0s) by Class::MOP::Class::BEGIN@16 at line 5
BEGIN {
417µs $Class::MOP::Method::Constructor::AUTHORITY = 'cpan:STEVAN';
5141µs112µs}
# spent 12µs making 1 call to Class::MOP::Method::Constructor::BEGIN@3
6{
721µs $Class::MOP::Method::Constructor::VERSION = '2.1005';
8}
9
10232µs242µs
# spent 25µs (9+16) within Class::MOP::Method::Constructor::BEGIN@10 which was called: # once (9µs+16µs) by Class::MOP::Class::BEGIN@16 at line 10
use strict;
# spent 25µs making 1 call to Class::MOP::Method::Constructor::BEGIN@10 # spent 16µs making 1 call to strict::import
11232µs220µs
# spent 15µs (10+5) within Class::MOP::Method::Constructor::BEGIN@11 which was called: # once (10µs+5µs) by Class::MOP::Class::BEGIN@16 at line 11
use warnings;
# spent 15µs making 1 call to Class::MOP::Method::Constructor::BEGIN@11 # spent 5µs making 1 call to warnings::import
12
13236µs270µs
# spent 40µs (9+31) within Class::MOP::Method::Constructor::BEGIN@13 which was called: # once (9µs+31µs) by Class::MOP::Class::BEGIN@16 at line 13
use Carp 'confess';
# spent 40µs making 1 call to Class::MOP::Method::Constructor::BEGIN@13 # spent 31µs making 1 call to Exporter::import
14232µs274µs
# spent 42µs (9+33) within Class::MOP::Method::Constructor::BEGIN@14 which was called: # once (9µs+33µs) by Class::MOP::Class::BEGIN@16 at line 14
use Scalar::Util 'blessed', 'weaken';
# spent 42µs making 1 call to Class::MOP::Method::Constructor::BEGIN@14 # spent 33µs making 1 call to Exporter::import
15236µs296µs
# spent 53µs (10+43) within Class::MOP::Method::Constructor::BEGIN@15 which was called: # once (10µs+43µs) by Class::MOP::Class::BEGIN@16 at line 15
use Try::Tiny;
# spent 53µs making 1 call to Class::MOP::Method::Constructor::BEGIN@15 # spent 43µs making 1 call to Exporter::import
16
172643µs22.08ms
# spent 1.05ms (10µs+1.04) within Class::MOP::Method::Constructor::BEGIN@17 which was called: # once (10µs+1.04ms) by Class::MOP::Class::BEGIN@16 at line 17
use base 'Class::MOP::Method::Inlined';
# spent 1.05ms making 1 call to Class::MOP::Method::Constructor::BEGIN@17 # spent 1.04ms making 1 call to base::import
18
19
# spent 81.0ms (712µs+80.3) within Class::MOP::Method::Constructor::new which was called 30 times, avg 2.70ms/call: # 30 times (712µs+80.3ms) by Class::MOP::Class::_inline_constructor at line 1438 of Class/MOP/Class.pm, avg 2.70ms/call
sub new {
203010µs my $class = shift;
213074µs my %options = @_;
22
2330202µs6060µs (blessed $options{metaclass} && $options{metaclass}->isa('Class::MOP::Class'))
# spent 31µs making 30 calls to Scalar::Util::blessed, avg 1µs/call # spent 30µs making 30 calls to UNIVERSAL::isa, avg 990ns/call
24 || confess "You must pass a metaclass instance if you want to inline"
25 if $options{is_inline};
26
273011µs ($options{package_name} && $options{name})
28 || confess "You must supply the package_name and name parameters $Class::MOP::Method::UPGRADE_ERROR_TEXT";
29
303048µs30267µs my $self = $class->_new(\%options);
# spent 267µs making 30 calls to Class::MOP::Method::Constructor::_new, avg 9µs/call
31
32 # we don't want this creating
33 # a cycle in the code, if not
34 # needed
3530265µs3037µs weaken($self->{'associated_metaclass'});
# spent 37µs making 30 calls to Scalar::Util::weaken, avg 1µs/call
36
373033µs3079.9ms $self->_initialize_body;
# spent 79.9ms making 30 calls to Class::MOP::Method::Constructor::_initialize_body, avg 2.66ms/call
38
393097µs return $self;
40}
41
42
# spent 267µs within Class::MOP::Method::Constructor::_new which was called 30 times, avg 9µs/call: # 30 times (267µs+0s) by Class::MOP::Method::Constructor::new at line 30, avg 9µs/call
sub _new {
43307µs my $class = shift;
44
453011µs return Class::MOP::Class->initialize($class)->new_object(@_)
46 if $class ne __PACKAGE__;
47
483018µs my $params = @_ == 1 ? $_[0] : {@_};
49
5030260µs return bless {
51 # inherited from Class::MOP::Method
52 body => $params->{body},
53 # associated_metaclass => $params->{associated_metaclass}, # overridden
54 package_name => $params->{package_name},
55 name => $params->{name},
56 original_method => $params->{original_method},
57
58 # inherited from Class::MOP::Generated
59 is_inline => $params->{is_inline} || 0,
60 definition_context => $params->{definition_context},
61
62 # inherited from Class::MOP::Inlined
63 _expected_method_class => $params->{_expected_method_class},
64
65 # defined in this subclass
66 options => $params->{options} || {},
67 associated_metaclass => $params->{metaclass},
68 }, $class;
69}
70
71## accessors
72
733188µssub options { (shift)->{'options'} }
7490237µssub associated_metaclass { (shift)->{'associated_metaclass'} }
75
76## method
77
78
# spent 79.9ms (235µs+79.7) within Class::MOP::Method::Constructor::_initialize_body which was called 30 times, avg 2.66ms/call: # 30 times (235µs+79.7ms) by Class::MOP::Method::Constructor::new at line 37, avg 2.66ms/call
sub _initialize_body {
79306µs my $self = shift;
80306µs my $method_name = '_generate_constructor_method';
81
823091µs3020µs $method_name .= '_inline' if $self->is_inline;
# spent 20µs making 30 calls to Class::MOP::Method::Generated::is_inline, avg 657ns/call
83
8430127µs3079.7ms $self->{'body'} = $self->$method_name;
# spent 79.7ms making 30 calls to Class::MOP::Method::Constructor::_generate_constructor_method_inline, avg 2.66ms/call
85}
86
87
# spent 12.3ms (198µs+12.1) within Class::MOP::Method::Constructor::_eval_environment which was called 31 times, avg 396µs/call: # 31 times (198µs+12.1ms) by Class::MOP::Method::Generated::_compile_code at line 59 of Class/MOP/Method/Generated.pm, avg 396µs/call
sub _eval_environment {
88317µs my $self = shift;
8931123µs6212.1ms return $self->associated_metaclass->_eval_environment;
# spent 11.8ms making 30 calls to Class::MOP::Class::_eval_environment, avg 394µs/call # spent 218µs making 1 call to Moose::Meta::Class::_eval_environment # spent 39µs making 30 calls to Class::MOP::Method::Constructor::associated_metaclass, avg 1µs/call # spent 2µs making 1 call to Class::MOP::Method::associated_metaclass
90}
91
92sub _generate_constructor_method {
93 return sub { Class::MOP::Class->initialize(shift)->new_object(@_) }
94}
95
96
# spent 81.9ms (1.28+80.6) within Class::MOP::Method::Constructor::_generate_constructor_method_inline which was called 31 times, avg 2.64ms/call: # 30 times (1.22ms+78.4ms) by Class::MOP::Method::Constructor::_initialize_body at line 84, avg 2.66ms/call # once (56µs+2.17ms) by Moose::Meta::Method::Constructor::_initialize_body at line 57 of Moose/Meta/Method/Constructor.pm
sub _generate_constructor_method_inline {
97316µs my $self = shift;
98
993137µs3140µs my $meta = $self->associated_metaclass;
# spent 38µs making 30 calls to Class::MOP::Method::Constructor::associated_metaclass, avg 1µs/call # spent 2µs making 1 call to Class::MOP::Method::associated_metaclass
100
10131253µs3147.7ms my @source = (
# spent 47.7ms making 31 calls to Class::MOP::Class::_inline_new_object, avg 1.54ms/call
102 'sub {',
103 $meta->_inline_new_object,
104 '}',
105 );
106
1073153µs3148µs warn join("\n", @source) if $self->options->{debug};
# spent 48µs making 31 calls to Class::MOP::Method::Constructor::options, avg 2µs/call
108
109 my $code = try {
11031111µs3131.8ms $self->_compile_code(\@source);
# spent 31.8ms making 31 calls to Class::MOP::Method::Generated::_compile_code, avg 1.02ms/call
111 }
112 catch {
113 my $source = join("\n", @source);
114 confess "Could not eval the constructor :\n\n$source\n\nbecause :\n\n$_";
11531416µs6232.8ms };
# spent 32.7ms making 31 calls to Try::Tiny::try, avg 1.05ms/call # spent 107µs making 31 calls to Try::Tiny::catch, avg 3µs/call
116
11731305µs return $code;
118}
119
12014µs1;
121
122# ABSTRACT: Method Meta Object for constructors
123
124__END__