← 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:23:16 2010

File /usr/local/lib/perl5/site_perl/5.10.1/darwin-2level/Class/MOP/Module.pm
Statements Executed 57
Statement Execution Time 483µs
Subroutines — ordered by exclusive time
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
51185µs139µsClass::MOP::Module::::_instantiate_moduleClass::MOP::Module::_instantiate_module
11114µs17µsClass::MOP::Module::::BEGIN@4Class::MOP::Module::BEGIN@4
11110µs23µsClass::MOP::Module::::BEGIN@5Class::MOP::Module::BEGIN@5
1118µs1.57msClass::MOP::Module::::BEGIN@14Class::MOP::Module::BEGIN@14
1117µs19µsClass::MOP::Module::::BEGIN@64Class::MOP::Module::BEGIN@64
1117µs28µsClass::MOP::Module::::BEGIN@8Class::MOP::Module::BEGIN@8
1116µs31µsClass::MOP::Module::::BEGIN@7Class::MOP::Module::BEGIN@7
0000s0sClass::MOP::Module::::_newClass::MOP::Module::_new
0000s0sClass::MOP::Module::::authorityClass::MOP::Module::authority
0000s0sClass::MOP::Module::::createClass::MOP::Module::create
0000s0sClass::MOP::Module::::identifierClass::MOP::Module::identifier
0000s0sClass::MOP::Module::::versionClass::MOP::Module::version
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::Module;
3
4326µs220µs
# spent 17µs (14+3) within Class::MOP::Module::BEGIN@4 which was called # once (14µs+3µs) by base::import at line 4
use strict;
# spent 17µs making 1 call to Class::MOP::Module::BEGIN@4 # spent 3µs making 1 call to strict::import
5321µs236µs
# spent 23µs (10+13) within Class::MOP::Module::BEGIN@5 which was called # once (10µs+13µs) by base::import at line 5
use warnings;
# spent 23µs making 1 call to Class::MOP::Module::BEGIN@5 # spent 13µs making 1 call to warnings::import
6
7321µs255µs
# spent 31µs (6+24) within Class::MOP::Module::BEGIN@7 which was called # once (6µs+24µs) by base::import at line 7
use Carp 'confess';
# spent 31µs making 1 call to Class::MOP::Module::BEGIN@7 # spent 24µs making 1 call to Exporter::import
8347µs250µs
# spent 28µs (7+22) within Class::MOP::Module::BEGIN@8 which was called # once (7µs+22µs) by base::import at line 8
use Scalar::Util 'blessed';
# spent 28µs making 1 call to Class::MOP::Module::BEGIN@8 # spent 22µs making 1 call to Exporter::import
9
101700nsour $VERSION = '0.98';
11114µs$VERSION = eval $VERSION;
121300nsour $AUTHORITY = 'cpan:STEVAN';
13
143200µs21.57ms
# spent 1.57ms (8µs+1.56) within Class::MOP::Module::BEGIN@14 which was called # once (8µs+1.56ms) by base::import at line 14
use base 'Class::MOP::Package';
# spent 1.57ms making 1 call to Class::MOP::Module::BEGIN@14 # spent 1.56ms making 1 call to base::import, recursion: max depth 1, time 1.56ms
15
16sub _new {
17 my $class = shift;
18 return Class::MOP::Class->initialize($class)->new_object(@_)
19 if $class ne __PACKAGE__;
20
21 my $params = @_ == 1 ? $_[0] : {@_};
22 return bless {
23
24 # from Class::MOP::Package
25 package => $params->{package},
26 namespace => \undef,
27
28 # attributes
29 version => \undef,
30 authority => \undef
31 } => $class;
32}
33
34sub version {
35 my $self = shift;
36 ${$self->get_package_symbol({ sigil => '$', type => 'SCALAR', name => 'VERSION' })};
37}
38
39sub authority {
40 my $self = shift;
41 ${$self->get_package_symbol({ sigil => '$', type => 'SCALAR', name => 'AUTHORITY' })};
42}
43
44sub identifier {
45 my $self = shift;
46 join '-' => (
47 $self->name,
48 ($self->version || ()),
49 ($self->authority || ()),
50 );
51}
52
53sub create {
54 confess "The Class::MOP::Module->create method has been made a private object method.\n";
55}
56
57
# spent 139µs (85+54) within Class::MOP::Module::_instantiate_module which was called 5 times, avg 28µs/call: # 5 times (85µs+54µs) by Class::MOP::Class::create at line 300 of Class/MOP/Class.pm, avg 28µs/call
sub _instantiate_module {
58511µs my($self, $version, $authority) = @_;
59520µs52µs my $package_name = $self->name;
# spent 2µs making 5 calls to Class::MOP::Package::name, avg 480ns/call
60
6158µs552µs Class::MOP::_is_valid_class_name($package_name)
# spent 52µs making 5 calls to Class::MOP::_is_valid_class_name, avg 10µs/call
62 || confess "creation of $package_name failed: invalid package name";
63
64367µs231µs
# spent 19µs (7+12) within Class::MOP::Module::BEGIN@64 which was called # once (7µs+12µs) by base::import at line 64
no strict 'refs';
# spent 19µs making 1 call to Class::MOP::Module::BEGIN@64 # spent 12µs making 1 call to strict::unimport
65527µs scalar %{ $package_name . '::' }; # touch the stash
6652µs ${ $package_name . '::VERSION' } = $version if defined $version;
6752µs ${ $package_name . '::AUTHORITY' } = $authority if defined $authority;
68
69512µs return;
70}
71
7214µs1;
73
74__END__
75
76=pod
77
78=head1 NAME
79
80Class::MOP::Module - Module Meta Object
81
82=head1 DESCRIPTION
83
84A module is essentially a L<Class::MOP::Package> with metadata, in our
85case the version and authority.
86
87=head1 INHERITANCE
88
89B<Class::MOP::Module> is a subclass of L<Class::MOP::Package>.
90
91=head1 METHODS
92
93=over 4
94
95=item B<< $metamodule->version >>
96
97This is a read-only attribute which returns the C<$VERSION> of the
98package, if one exists.
99
100=item B<< $metamodule->authority >>
101
102This is a read-only attribute which returns the C<$AUTHORITY> of the
103package, if one exists.
104
105=item B<< $metamodule->identifier >>
106
107This constructs a string which combines the name, version and
108authority.
109
110=item B<< Class::MOP::Module->meta >>
111
112This will return a L<Class::MOP::Class> instance for this class.
113
114=back
115
116=head1 AUTHORS
117
118Stevan Little E<lt>stevan@iinteractive.comE<gt>
119
120=head1 COPYRIGHT AND LICENSE
121
122Copyright 2006-2010 by Infinity Interactive, Inc.
123
124L<http://www.iinteractive.com>
125
126This library is free software; you can redistribute it and/or modify
127it under the same terms as Perl itself.
128
129=cut