← Index
NYTProf Performance Profile   « block view • line view • sub view »
For 05.Domain_and_Item.t
  Run on Tue May 4 17:21:41 2010
Reported on Tue May 4 17:22:34 2010

File /usr/local/lib/perl5/site_perl/5.10.1/darwin-2level/Moose/Object.pm
Statements Executed 736
Statement Execution Time 4.11ms
Subroutines — ordered by exclusive time
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
37431.07ms92.9msMoose::Object::::newMoose::Object::new
36142778µs2.44msMoose::Object::::DESTROYMoose::Object::DESTROY
3711400µs400µsMoose::Object::::BUILDARGSMoose::Object::BUILDARGS
3611365µs748µsMoose::Object::::__ANON__[:94]Moose::Object::__ANON__[:94]
3611247µs323µsMoose::Object::::DEMOLISHALLMoose::Object::DEMOLISHALL
3711206µs260µsMoose::Object::::BUILDALLMoose::Object::BUILDALL
111196µs228µsMoose::Object::::BEGIN@12Moose::Object::BEGIN@12
11146µs47µsMoose::Object::::BEGIN@106Moose::Object::BEGIN@106
11121µs32µsMoose::Object::::doesMoose::Object::does
11114µs1.13msMoose::Object::::BEGIN@13Moose::Object::BEGIN@13
11113µs16µsMoose::Object::::BEGIN@4Moose::Object::BEGIN@4
1119µs27µsMoose::Object::::BEGIN@98Moose::Object::BEGIN@98
1118µs27µsMoose::Object::::BEGIN@80Moose::Object::BEGIN@80
1117µs16µsMoose::Object::::BEGIN@5Moose::Object::BEGIN@5
1113µs3µsMoose::Object::::BEGIN@7Moose::Object::BEGIN@7
1113µs3µsMoose::Object::::BEGIN@9Moose::Object::BEGIN@9
1113µs3µsMoose::Object::::BEGIN@8Moose::Object::BEGIN@8
1112µs2µsMoose::Object::::BEGIN@10Moose::Object::BEGIN@10
0000s0sMoose::Object::::__ANON__[:100]Moose::Object::__ANON__[:100]
0000s0sMoose::Object::::dumpMoose::Object::dump
Call graph for these subroutines as a Graphviz dot language file.
Line State
ments
Time
on line
Calls Time
in subs
Code
1
2package Moose::Object;
3
4320µs219µs
# spent 16µs (13+3) within Moose::Object::BEGIN@4 which was called # once (13µs+3µs) by Moose::BEGIN@24 at line 4
use strict;
# spent 16µs making 1 call to Moose::Object::BEGIN@4 # spent 3µs making 1 call to strict::import
5318µs224µs
# spent 16µs (7+9) within Moose::Object::BEGIN@5 which was called # once (7µs+9µs) by Moose::BEGIN@24 at line 5
use warnings;
# spent 16µs making 1 call to Moose::Object::BEGIN@5 # spent 9µs making 1 call to warnings::import
6
7328µs13µs
# spent 3µs within Moose::Object::BEGIN@7 which was called # once (3µs+0s) by Moose::BEGIN@24 at line 7
use Devel::GlobalDestruction ();
# spent 3µs making 1 call to Moose::Object::BEGIN@7
8315µs13µs
# spent 3µs within Moose::Object::BEGIN@8 which was called # once (3µs+0s) by Moose::BEGIN@24 at line 8
use MRO::Compat ();
# spent 3µs making 1 call to Moose::Object::BEGIN@8
9314µs13µs
# spent 3µs within Moose::Object::BEGIN@9 which was called # once (3µs+0s) by Moose::BEGIN@24 at line 9
use Scalar::Util ();
# spent 3µs making 1 call to Moose::Object::BEGIN@9
10325µs12µs
# spent 2µs within Moose::Object::BEGIN@10 which was called # once (2µs+0s) by Moose::BEGIN@24 at line 10
use Try::Tiny ();
# spent 2µs making 1 call to Moose::Object::BEGIN@10
11
123213µs2232µs
# spent 228µs (196+32) within Moose::Object::BEGIN@12 which was called # once (196µs+32µs) by Moose::BEGIN@24 at line 12
use if ( not our $__mx_is_compiled ), 'Moose::Meta::Class';
# spent 228µs making 1 call to Moose::Object::BEGIN@12 # spent 4µs making 1 call to if::import
133254µs21.13ms
# spent 1.13ms (14µs+1.12) within Moose::Object::BEGIN@13 which was called # once (14µs+1.12ms) by Moose::BEGIN@24 at line 13
use if ( not our $__mx_is_compiled ), metaclass => 'Moose::Meta::Class';
# spent 1.13ms making 1 call to Moose::Object::BEGIN@13 # spent 3µs making 1 call to if::import
14
151600nsour $VERSION = '0.98';
16118µs$VERSION = eval $VERSION;
171300nsour $AUTHORITY = 'cpan:STEVAN';
18
19
# spent 92.9ms (1.07+91.9) within Moose::Object::new which was called 37 times, avg 2.51ms/call: # 30 times (872µs+48.6ms) by SimpleDB::Class::Role::Itemized::instantiate_item at line 52 of ../lib/SimpleDB/Class/Role/Itemized.pm, avg 1.65ms/call # 5 times (149µs+41.8ms) by SimpleDB::Class::Role::Itemized::parse_item at line 134 of ../lib/SimpleDB/Class/Role/Itemized.pm, avg 8.39ms/call # once (14µs+800µs) by SimpleDB::Class::Item::copy at line 415 of ../lib/SimpleDB/Class/Item.pm # once (35µs+677µs) by SimpleDB::Class::new at line 3 of generated method (unknown origin)
sub new {
20222957µs my $class = shift;
21
22 my $params = $class->BUILDARGS(@_);
# spent 400µs making 37 calls to Moose::Object::BUILDARGS, avg 11µs/call
23
24 my $real_class = Scalar::Util::blessed($class) || $class;
# spent 48µs making 37 calls to Scalar::Util::blessed, avg 1µs/call
25 my $self = Class::MOP::Class->initialize($real_class)->new_object($params);
# spent 90.6ms making 37 calls to Moose::Meta::Class::new_object, avg 2.45ms/call # spent 552µs making 37 calls to Class::MOP::Class::initialize, avg 15µs/call
26
27 $self->BUILDALL($params);
# spent 260µs making 37 calls to Moose::Object::BUILDALL, avg 7µs/call
28
29 return $self;
30}
31
32
# spent 400µs within Moose::Object::BUILDARGS which was called 37 times, avg 11µs/call: # 37 times (400µs+0s) by Moose::Object::new at line 22, avg 11µs/call
sub BUILDARGS {
337450µs my $class = shift;
3473385µs if ( scalar @_ == 1 ) {
35 unless ( defined $_[0] && ref $_[0] eq 'HASH' ) {
36 Class::MOP::class_of($class)->throw_error(
37 "Single parameters to new() must be a HASH ref",
38 data => $_[0] );
39 }
40 return { %{ $_[0] } };
41 }
42 else {
43 return {@_};
44 }
45}
46
47
# spent 260µs (206+55) within Moose::Object::BUILDALL which was called 37 times, avg 7µs/call: # 37 times (206µs+55µs) by Moose::Object::new at line 27, avg 7µs/call
sub BUILDALL {
48 # NOTE: we ask Perl if we even
49 # need to do this first, to avoid
50 # extra meta level calls
5137291µs3755µs return unless $_[0]->can('BUILD');
# spent 55µs making 37 calls to UNIVERSAL::can, avg 1µs/call
52 my ($self, $params) = @_;
53 foreach my $method (reverse Class::MOP::class_of($self)->find_all_methods_by_name('BUILD')) {
54 $method->{code}->execute($self, $params);
55 }
56}
57
58
# spent 323µs (247+76) within Moose::Object::DEMOLISHALL which was called 36 times, avg 9µs/call: # 36 times (247µs+76µs) by Moose::Object::__ANON__[/usr/local/lib/perl5/site_perl/5.10.1/darwin-2level/Moose/Object.pm:94] at line 93, avg 9µs/call
sub DEMOLISHALL {
59108357µs my $self = shift;
60 my ($in_global_destruction) = @_;
61
62 # NOTE: we ask Perl if we even
63 # need to do this first, to avoid
64 # extra meta level calls
65 return unless $self->can('DEMOLISH');
# spent 76µs making 36 calls to UNIVERSAL::can, avg 2µs/call
66
67 my @isa;
68 if ( my $meta = Class::MOP::class_of($self ) ) {
69 @isa = $meta->linearized_isa;
70 } else {
71 # We cannot count on being able to retrieve a previously made
72 # metaclass, _or_ being able to make a new one during global
73 # destruction. However, we should still be able to use mro at
74 # that time (at least tests suggest so ;)
75 my $class_name = ref $self;
76 @isa = @{ mro::get_linear_isa($class_name) }
77 }
78
79 foreach my $class (@isa) {
80398µs245µs
# spent 27µs (8+19) within Moose::Object::BEGIN@80 which was called # once (8µs+19µs) by Moose::BEGIN@24 at line 80
no strict 'refs';
# spent 27µs making 1 call to Moose::Object::BEGIN@80 # spent 19µs making 1 call to strict::unimport
81 my $demolish = *{"${class}::DEMOLISH"}{CODE};
82 $self->$demolish($in_global_destruction)
83 if defined $demolish;
84 }
85}
86
87
# spent 2.44ms (778µs+1.67) within Moose::Object::DESTROY which was called 36 times, avg 68µs/call: # 13 times (260µs+536µs) by main::NULL at line 0 of 05.Domain_and_Item.t, avg 61µs/call # 8 times (149µs+296µs) by SimpleDB::Class::ResultSet::count at line 274 of ../lib/SimpleDB/Class/ResultSet.pm, avg 56µs/call # 3 times (54µs+108µs) by main::RUNTIME at line 135 of 05.Domain_and_Item.t, avg 54µs/call # 2 times (53µs+119µs) by main::RUNTIME at line 90 of 05.Domain_and_Item.t, avg 86µs/call # once (32µs+91µs) by SimpleDB::Class::Domain::insert at line 33 of 05.Domain_and_Item.t # once (35µs+79µs) by main::RUNTIME at line 39 of 05.Domain_and_Item.t # once (27µs+80µs) by main::RUNTIME at line 38 of 05.Domain_and_Item.t # once (31µs+65µs) by SimpleDB::Class::Domain::insert at line 44 of 05.Domain_and_Item.t # once (29µs+61µs) by SimpleDB::Class::Domain::insert at line 45 of 05.Domain_and_Item.t # once (24µs+54µs) by main::RUNTIME at line 125 of 05.Domain_and_Item.t # once (24µs+47µs) by main::RUNTIME at line 63 of 05.Domain_and_Item.t # once (21µs+47µs) by main::RUNTIME at line 54 of 05.Domain_and_Item.t # once (20µs+40µs) by main::RUNTIME at line 41 of 05.Domain_and_Item.t # once (18µs+42µs) by main::RUNTIME at line 64 of 05.Domain_and_Item.t
sub DESTROY {
88144704µs my $self = shift;
89
90 local $?;
91
92
# spent 748µs (365+382) within Moose::Object::__ANON__[/usr/local/lib/perl5/site_perl/5.10.1/darwin-2level/Moose/Object.pm:94] which was called 36 times, avg 21µs/call: # 36 times (365µs+382µs) by Try::Tiny::try at line 76 of Try/Tiny.pm, avg 21µs/call
Try::Tiny::try {
9336414µs72382µs $self->DEMOLISHALL(Devel::GlobalDestruction::in_global_destruction);
# spent 323µs making 36 calls to Moose::Object::DEMOLISHALL, avg 9µs/call # spent 59µs making 36 calls to Devel::GlobalDestruction::in_global_destruction, avg 2µs/call
94 }
95 Try::Tiny::catch {
96 # Without this, Perl will warn "\t(in cleanup)$@" because of some
97 # bizarre fucked-up logic deep in the internals.
98373µs244µs
# spent 27µs (9+17) within Moose::Object::BEGIN@98 which was called # once (9µs+17µs) by Moose::BEGIN@24 at line 98
no warnings 'misc';
# spent 27µs making 1 call to Moose::Object::BEGIN@98 # spent 17µs making 1 call to warnings::unimport
99 die $_;
100 };
# spent 1.42ms making 36 calls to Try::Tiny::try, avg 40µs/call # spent 242µs making 36 calls to Try::Tiny::catch, avg 7µs/call
101
102 return;
103}
104
105# support for UNIVERSAL::DOES ...
106
# spent 47µs (46+1) within Moose::Object::BEGIN@106 which was called # once (46µs+1µs) by Moose::BEGIN@24 at line 113
BEGIN {
107248µs11µs my $does = UNIVERSAL->can("DOES") ? "SUPER::DOES" : "isa";
# spent 1µs making 1 call to UNIVERSAL::can
108 eval 'sub DOES {
109 my ( $self, $class_or_role_name ) = @_;
110 return $self->'.$does.'($class_or_role_name)
111 || $self->does($class_or_role_name);
112 }';
113194µs147µs}
# spent 47µs making 1 call to Moose::Object::BEGIN@106
114
115# new does() methods will be created
116# as appropiate see Moose::Meta::Role
117
# spent 32µs (21+11) within Moose::Object::does which was called # once (21µs+11µs) by Moose::Meta::Attribute::does at line 37 of Moose/Meta/Attribute.pm
sub does {
118526µs my ($self, $role_name) = @_;
119 my $meta = Class::MOP::class_of($self);
# spent 5µs making 1 call to Class::MOP::class_of
120 (defined $role_name)
121 || $meta->throw_error("You must supply a role name to does()");
122 return 1 if $meta->can('does_role') && $meta->does_role($role_name);
# spent 6µs making 1 call to UNIVERSAL::can
123 return 0;
124}
125
126sub dump {
127 my $self = shift;
128 require Data::Dumper;
129 local $Data::Dumper::Maxdepth = shift if @_;
130 Data::Dumper::Dumper $self;
131}
132
13314µs1;
134
135__END__
136
137=pod
138
139=head1 NAME
140
141Moose::Object - The base object for Moose
142
143=head1 DESCRIPTION
144
145This class is the default base class for all Moose-using classes. When
146you C<use Moose> in this class, your class will inherit from this
147class.
148
149It provides a default constructor and destructor, which run the
150C<BUILDALL> and C<DEMOLISHALL> methods respectively.
151
152You don't actually I<need> to inherit from this in order to use Moose,
153but it makes it easier to take advantage of all of Moose's features.
154
155=head1 METHODS
156
157=over 4
158
159=item B<< Moose::Object->new(%params) >>
160
161This method calls C<< $class->BUILDARGS(@_) >>, and then creates a new
162instance of the appropriate class. Once the instance is created, it
163calls C<< $instance->BUILDALL($params) >>.
164
165=item B<< Moose::Object->BUILDARGS(%params) >>
166
167The default implementation of this method accepts a hash or hash
168reference of named parameters. If it receives a single argument that
169I<isn't> a hash reference it throws an error.
170
171You can override this method in your class to handle other types of
172options passed to the constructor.
173
174This method should always return a hash reference of named options.
175
176=item B<< $object->BUILDALL($params) >>
177
178This method will call every C<BUILD> method in the inheritance
179hierarchy, starting with the most distant parent class and ending with
180the object's class.
181
182The C<BUILD> method will be passed the hash reference returned by
183C<BUILDARGS>.
184
185=item B<< $object->DEMOLISHALL >>
186
187This will call every C<DEMOLISH> method in the inheritance hierarchy,
188starting with the object's class and ending with the most distant
189parent. C<DEMOLISHALL> and C<DEMOLISH> will receive a boolean
190indicating whether or not we are currently in global destruction.
191
192=item B<< $object->does($role_name) >>
193
194This returns true if the object does the given role.
195
196=item B<DOES ($class_or_role_name)>
197
198This is a a Moose role-aware implementation of L<UNIVERSAL/DOES>.
199
200This is effectively the same as writing:
201
202 $object->does($name) || $object->isa($name)
203
204This method will work with Perl 5.8, which did not implement
205C<UNIVERSAL::DOES>.
206
207=item B<< $object->dump($maxdepth) >>
208
209This is a handy utility for C<Data::Dumper>ing an object. By default,
210the maximum depth is 1, to avoid making a mess.
211
212=back
213
214=head1 BUGS
215
216See L<Moose/BUGS> for details on reporting bugs.
217
218=head1 AUTHOR
219
220Stevan Little E<lt>stevan@iinteractive.comE<gt>
221
222=head1 COPYRIGHT AND LICENSE
223
224Copyright 2006-2010 by Infinity Interactive, Inc.
225
226L<http://www.iinteractive.com>
227
228This library is free software; you can redistribute it and/or modify
229it under the same terms as Perl itself.
230
231=cut