← Index
NYTProf Performance Profile   « line view »
For /home/ss5/perl5/perlbrew/perls/perl-5.22.0/bin/benchmarkanything-storage
  Run on Mon Jan 29 16:55:34 2018
Reported on Mon Jan 29 16:57:06 2018

Filename/home/ss5/perl5/perlbrew/perls/perl-5.22.0/lib/site_perl/5.22.0/x86_64-linux/Class/MOP/Module.pm
StatementsExecuted 38 statements in 250µs
Subroutines
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
21122µs202µsClass::MOP::Module::::createClass::MOP::Module::create
2118µs9µsClass::MOP::Module::::_instantiate_moduleClass::MOP::Module::_instantiate_module
1118µs10µsClass::MOP::Module::::BEGIN@4Class::MOP::Module::BEGIN@4
1116µs1.79msClass::MOP::Module::::BEGIN@7Class::MOP::Module::BEGIN@7
1113µs6µsClass::MOP::Module::::BEGIN@5Class::MOP::Module::BEGIN@5
0000s0sClass::MOP::Module::::_anon_cache_keyClass::MOP::Module::_anon_cache_key
0000s0sClass::MOP::Module::::_anon_package_prefixClass::MOP::Module::_anon_package_prefix
0000s0sClass::MOP::Module::::_newClass::MOP::Module::_new
0000s0sClass::MOP::Module::::identifierClass::MOP::Module::identifier
Call graph for these subroutines as a Graphviz dot language file.
Line State
ments
Time
on line
Calls Time
in subs
Code
1package Class::MOP::Module;
21300nsour $VERSION = '2.1605';
3
4212µs211µs
# spent 10µs (8+1) within Class::MOP::Module::BEGIN@4 which was called: # once (8µs+1µs) by parent::import at line 4
use strict;
# spent 10µs making 1 call to Class::MOP::Module::BEGIN@4 # spent 2µs making 1 call to strict::import
5212µs29µs
# spent 6µs (3+3) within Class::MOP::Module::BEGIN@5 which was called: # once (3µs+3µs) by parent::import at line 5
use warnings;
# spent 6µs making 1 call to Class::MOP::Module::BEGIN@5 # spent 3µs making 1 call to warnings::import
6
72192µs21.79ms
# spent 1.79ms (6µs+1.79) within Class::MOP::Module::BEGIN@7 which was called: # once (6µs+1.79ms) by parent::import at line 7
use parent 'Class::MOP::Package';
# spent 1.79ms making 1 call to Class::MOP::Module::BEGIN@7 # spent 1.79ms making 1 call to parent::import, recursion: max depth 1, sum of overlapping time 1.79ms
8
9sub _new {
10 my $class = shift;
11 return Class::MOP::Class->initialize($class)->new_object(@_)
12 if $class ne __PACKAGE__;
13
14 my $params = @_ == 1 ? $_[0] : {@_};
15 return bless {
16 # Need to quote package to avoid a problem with PPI mis-parsing this
17 # as a package statement.
18
19 # from Class::MOP::Package
20 'package' => $params->{package},
21 namespace => \undef,
22
23 # attributes
24 version => \undef,
25 authority => \undef
26 } => $class;
27}
28
29sub version {
30 my $self = shift;
31 ${$self->get_or_add_package_symbol('$VERSION')};
32}
33
34sub authority {
35 my $self = shift;
36 ${$self->get_or_add_package_symbol('$AUTHORITY')};
37}
38
39sub identifier {
40 my $self = shift;
41 join '-' => (
42 $self->name,
43 ($self->version || ()),
44 ($self->authority || ()),
45 );
46}
47
48
# spent 202µs (22+180) within Class::MOP::Module::create which was called 2 times, avg 101µs/call: # 2 times (22µs+180µs) by Class::MOP::Class::create at line 444 of Class/MOP/Class.pm, avg 101µs/call
sub create {
492500ns my $class = shift;
5021µs my @args = @_;
51
5222µs unshift @args, 'package' if @args % 2 == 1;
5321µs my %options = @args;
54
552900ns my $package = delete $options{package};
562400ns my $version = delete $options{version};
572600ns my $authority = delete $options{authority};
58
5924µs2171µs my $meta = $class->SUPER::create($package => %options);
# spent 171µs making 2 calls to Class::MOP::Package::create, avg 86µs/call
60
6124µs29µs $meta->_instantiate_module($version, $authority);
# spent 9µs making 2 calls to Class::MOP::Module::_instantiate_module, avg 4µs/call
62
6326µs return $meta;
64}
65
66sub _anon_package_prefix { 'Class::MOP::Module::__ANON__::SERIAL::' }
67
68sub _anon_cache_key {
69 my $class = shift;
70 my %options = @_;
71 $class->_throw_exception( PackagesAndModulesAreNotCachable => class_name => $class,
72 params => \%options,
73 is_module => 1
74 );
75}
76
77
# spent 9µs (8+400ns) within Class::MOP::Module::_instantiate_module which was called 2 times, avg 4µs/call: # 2 times (8µs+400ns) by Class::MOP::Module::create at line 61, avg 4µs/call
sub _instantiate_module {
782800ns my($self, $version, $authority) = @_;
7925µs2400ns my $package_name = $self->name;
# spent 400ns making 2 calls to Class::MOP::Package::name, avg 200ns/call
80
812600ns $self->add_package_symbol('$VERSION' => $version)
82 if defined $version;
832600ns $self->add_package_symbol('$AUTHORITY' => $authority)
84 if defined $authority;
85
8624µs return;
87}
88
8912µs1;
90
91# ABSTRACT: Module Meta Object
92
93__END__