← Index
Performance Profile   « block view • line view • sub view »
For t/test-parsing
  Run on Sun Nov 14 09:49:57 2010
Reported on Sun Nov 14 09:50:07 2010

File /usr/local/lib/perl/5.10.0/Class/MOP/Module.pm
Statements Executed 36
Total Time 0.0006199 seconds
Subroutines — ordered by exclusive time
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
21134µs74µsClass::MOP::Module::::_instantiate_moduleClass::MOP::Module::_instantiate_module
0000s0sClass::MOP::Module::::BEGINClass::MOP::Module::BEGIN
0000s0sClass::MOP::Module::::_newClass::MOP::Module::_new
0000s0sClass::MOP::Module::::createClass::MOP::Module::create
0000s0sClass::MOP::Module::::identifierClass::MOP::Module::identifier
LineStmts.Exclusive
Time
Avg.Code
1
2package Class::MOP::Module;
3
4326µs9µsuse strict;
# spent 9µs making 1 call to strict::import
5334µs12µsuse warnings;
# spent 29µs making 1 call to warnings::import
6
7334µs12µsuse Carp 'confess';
# spent 49µs making 1 call to Exporter::import
8362µs21µsuse Scalar::Util 'blessed';
# spent 39µs making 1 call to Exporter::import
9
101700ns700nsour $VERSION = '1.09';
11126µs26µs$VERSION = eval $VERSION;
121500ns500nsour $AUTHORITY = 'cpan:STEVAN';
13
143304µs101µsuse base 'Class::MOP::Package';
# spent 3.37ms making 1 call to base::import, max recursion depth 1
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_or_add_package_symbol({ sigil => '$', type => 'SCALAR', name => 'VERSION' })};
37}
38
39sub authority {
40 my $self = shift;
41 ${$self->get_or_add_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 74µs (34+40) within Class::MOP::Module::_instantiate_module which was called 2 times, avg 37µs/call: # 2 times (34µs+40µs) by Class::MOP::Class::create at line 522 of /usr/local/lib/perl/5.10.0/Class/MOP/Class.pm, avg 37µs/call
sub _instantiate_module {
581438µs3µs my($self, $version, $authority) = @_;
59 my $package_name = $self->name;
# spent 6µs making 2 calls to Class::MOP::Package::name, avg 3µs/call
60
61 Class::MOP::_is_valid_class_name($package_name)
# spent 34µs making 2 calls to Class::MOP::_is_valid_class_name, avg 17µs/call
62 || confess "creation of $package_name failed: invalid package name";
63
64388µs29µs no strict 'refs';
# spent 30µs making 1 call to strict::unimport
65 scalar %{ $package_name . '::' }; # touch the stash
66 ${ $package_name . '::VERSION' } = $version if defined $version;
67 ${ $package_name . '::AUTHORITY' } = $authority if defined $authority;
68
69 return;
70}
71
7216µs6µ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