| Filename | /home/hinrik/perl5/perlbrew/perls/perl-5.13.5/lib/site_perl/5.13.5/x86_64-linux/Mouse/Role.pm |
| Statements | Executed 241 statements in 1.58ms |
| Calls | P | F | Exclusive Time |
Inclusive Time |
Subroutine |
|---|---|---|---|---|---|
| 10 | 1 | 1 | 326µs | 1.87ms | Mouse::Role::init_meta |
| 14 | 14 | 7 | 289µs | 492µs | Mouse::Role::has |
| 11 | 11 | 3 | 148µs | 611µs | Mouse::Role::requires |
| 3 | 3 | 2 | 75µs | 149µs | Mouse::Role::around |
| 3 | 3 | 3 | 28µs | 51.3ms | Mouse::Role::with (recurses: max depth 1, inclusive time 11.4ms) |
| 1 | 1 | 1 | 25µs | 35µs | Mouse::Role::BEGIN@2 |
| 1 | 1 | 1 | 11µs | 53µs | Mouse::Role::BEGIN@7 |
| 1 | 1 | 1 | 10µs | 54µs | Mouse::Role::BEGIN@6 |
| 1 | 1 | 1 | 9µs | 14µs | MouseX::Getopt::GLD::meta |
| 1 | 1 | 1 | 5µs | 5µs | Mouse::Role::BEGIN@9 |
| 0 | 0 | 0 | 0s | 0s | Hailo::Role::Arguments::meta |
| 0 | 0 | 0 | 0s | 0s | Hailo::Role::Engine::meta |
| 0 | 0 | 0 | 0s | 0s | Hailo::Role::Storage::meta |
| 0 | 0 | 0 | 0s | 0s | Hailo::Role::Tokenizer::meta |
| 0 | 0 | 0 | 0s | 0s | Mouse::Role::__ANON__[:121] |
| 0 | 0 | 0 | 0s | 0s | Mouse::Role::after |
| 0 | 0 | 0 | 0s | 0s | Mouse::Role::augment |
| 0 | 0 | 0 | 0s | 0s | Mouse::Role::before |
| 0 | 0 | 0 | 0s | 0s | Mouse::Role::excludes |
| 0 | 0 | 0 | 0s | 0s | Mouse::Role::extends |
| 0 | 0 | 0 | 0s | 0s | Mouse::Role::inner |
| 0 | 0 | 0 | 0s | 0s | Mouse::Role::override |
| 0 | 0 | 0 | 0s | 0s | Mouse::Role::super |
| 0 | 0 | 0 | 0s | 0s | MouseX::Getopt::Basic::meta |
| 0 | 0 | 0 | 0s | 0s | MouseX::Getopt::Dashes::meta |
| 0 | 0 | 0 | 0s | 0s | MouseX::Getopt::Meta::Attribute::Trait::NoGetopt::meta |
| 0 | 0 | 0 | 0s | 0s | MouseX::Getopt::Meta::Attribute::Trait::meta |
| 0 | 0 | 0 | 0s | 0s | MouseX::Getopt::meta |
| Line | State ments |
Time on line |
Calls | Time in subs |
Code |
|---|---|---|---|---|---|
| 1 | package Mouse::Role; | ||||
| 2 | 2 | 37µs | 2 | 45µs | # spent 35µs (25+10) within Mouse::Role::BEGIN@2 which was called:
# once (25µs+10µs) by MouseX::Getopt::BEGIN@10 at line 2 # spent 35µs making 1 call to Mouse::Role::BEGIN@2
# spent 10µs making 1 call to Mouse::Exporter::import |
| 3 | |||||
| 4 | 1 | 2µs | our $VERSION = '0.80'; | ||
| 5 | |||||
| 6 | 2 | 38µs | 2 | 99µs | # spent 54µs (10+44) within Mouse::Role::BEGIN@6 which was called:
# once (10µs+44µs) by MouseX::Getopt::BEGIN@10 at line 6 # spent 54µs making 1 call to Mouse::Role::BEGIN@6
# spent 44µs making 1 call to Exporter::import |
| 7 | 2 | 25µs | 2 | 95µs | # spent 53µs (11+42) within Mouse::Role::BEGIN@7 which was called:
# once (11µs+42µs) by MouseX::Getopt::BEGIN@10 at line 7 # spent 53µs making 1 call to Mouse::Role::BEGIN@7
# spent 42µs making 1 call to Exporter::import |
| 8 | |||||
| 9 | 2 | 512µs | 1 | 5µs | # spent 5µs within Mouse::Role::BEGIN@9 which was called:
# once (5µs+0s) by MouseX::Getopt::BEGIN@10 at line 9 # spent 5µs making 1 call to Mouse::Role::BEGIN@9 |
| 10 | |||||
| 11 | 1 | 7µs | 1 | 244µs | Mouse::Exporter->setup_import_methods( # spent 244µs making 1 call to Mouse::Exporter::setup_import_methods |
| 12 | as_is => [qw( | ||||
| 13 | extends with | ||||
| 14 | has | ||||
| 15 | before after around | ||||
| 16 | override super | ||||
| 17 | augment inner | ||||
| 18 | |||||
| 19 | requires excludes | ||||
| 20 | ), | ||||
| 21 | \&Scalar::Util::blessed, | ||||
| 22 | \&Carp::confess, | ||||
| 23 | ], | ||||
| 24 | ); | ||||
| 25 | |||||
| 26 | |||||
| 27 | sub extends { | ||||
| 28 | Carp::croak "Roles do not support 'extends'"; | ||||
| 29 | } | ||||
| 30 | |||||
| 31 | # spent 51.3ms (28µs+51.3) within Mouse::Role::with which was called 3 times, avg 17.1ms/call:
# once (8µs+49.7ms) by Any::Moose::_install_module at line 12 of MouseX/Getopt.pm
# once (9µs+1.58ms) by Mouse::Util::_try_load_one_class at line 12 of MouseX/Getopt/Dashes.pm
# once (11µs+-11µs) by Mouse::Util::_try_load_one_class at line 14 of MouseX/Getopt/GLD.pm | ||||
| 32 | 6 | 31µs | 3 | 49.7ms | Mouse::Util::apply_all_roles(scalar(caller), @_); # spent 62.7ms making 3 calls to Mouse::Util::apply_all_roles, avg 20.9ms/call, recursion: max depth 1, sum of overlapping time 13.0ms |
| 33 | return; | ||||
| 34 | } | ||||
| 35 | |||||
| 36 | # spent 492µs (289+203) within Mouse::Role::has which was called 14 times, avg 35µs/call:
# once (26µs+18µs) by Mouse::Util::_try_load_one_class at line 7 of lib/Hailo/Role/Arguments.pm
# once (25µs+17µs) by Mouse::Util::_try_load_one_class at line 13 of MouseX/Getopt/Meta/Attribute/Trait.pm
# once (25µs+17µs) by Mouse::Util::_try_load_one_class at line 7 of lib/Hailo/Role/Engine.pm
# once (24µs+16µs) by Mouse::Util::_try_load_one_class at line 16 of lib/Hailo/Role/Tokenizer.pm
# once (22µs+16µs) by Mouse::Util::_try_load_one_class at line 19 of MouseX/Getopt/Basic.pm
# once (20µs+15µs) by Mouse::Util::_try_load_one_class at line 7 of lib/Hailo/Role/Storage.pm
# once (20µs+15µs) by Mouse::Util::_try_load_one_class at line 22 of MouseX/Getopt/GLD.pm
# once (19µs+13µs) by Mouse::Util::_try_load_one_class at line 27 of MouseX/Getopt/Meta/Attribute/Trait.pm
# once (19µs+13µs) by Mouse::Util::_try_load_one_class at line 16 of MouseX/Getopt/GLD.pm
# once (18µs+13µs) by Mouse::Util::_try_load_one_class at line 20 of MouseX/Getopt/Basic.pm
# once (18µs+13µs) by Mouse::Util::_try_load_one_class at line 13 of lib/Hailo/Role/Engine.pm
# once (17µs+13µs) by Mouse::Util::_try_load_one_class at line 23 of lib/Hailo/Role/Storage.pm
# once (18µs+12µs) by Mouse::Util::_try_load_one_class at line 17 of lib/Hailo/Role/Storage.pm
# once (17µs+13µs) by Mouse::Util::_try_load_one_class at line 12 of lib/Hailo/Role/Storage.pm | ||||
| 37 | 70 | 193µs | 14 | 81µs | my $meta = Mouse::Meta::Role->initialize(scalar caller); # spent 81µs making 14 calls to Mouse::Meta::Module::initialize, avg 6µs/call |
| 38 | my $name = shift; | ||||
| 39 | |||||
| 40 | $meta->throw_error(q{Usage: has 'name' => ( key => value, ... )}) | ||||
| 41 | if @_ % 2; # odd number of arguments | ||||
| 42 | |||||
| 43 | for my $n(ref($name) ? @{$name} : $name){ | ||||
| 44 | 14 | 81µs | 14 | 122µs | $meta->add_attribute($n => @_); # spent 122µs making 14 calls to Mouse::Meta::Role::add_attribute, avg 9µs/call |
| 45 | } | ||||
| 46 | return; | ||||
| 47 | } | ||||
| 48 | |||||
| 49 | sub before { | ||||
| 50 | my $meta = Mouse::Meta::Role->initialize(scalar caller); | ||||
| 51 | my $code = pop; | ||||
| 52 | for my $name($meta->_collect_methods(@_)) { | ||||
| 53 | $meta->add_before_method_modifier($name => $code); | ||||
| 54 | } | ||||
| 55 | return; | ||||
| 56 | } | ||||
| 57 | |||||
| 58 | sub after { | ||||
| 59 | my $meta = Mouse::Meta::Role->initialize(scalar caller); | ||||
| 60 | my $code = pop; | ||||
| 61 | for my $name($meta->_collect_methods(@_)) { | ||||
| 62 | $meta->add_after_method_modifier($name => $code); | ||||
| 63 | } | ||||
| 64 | return; | ||||
| 65 | } | ||||
| 66 | |||||
| 67 | # spent 149µs (75+74) within Mouse::Role::around which was called 3 times, avg 50µs/call:
# once (31µs+27µs) by Mouse::Util::_try_load_one_class at line 33 of MouseX/Getopt/GLD.pm
# once (24µs+24µs) by Mouse::Util::_try_load_one_class at line 24 of MouseX/Getopt/Dashes.pm
# once (20µs+22µs) by Mouse::Util::_try_load_one_class at line 39 of MouseX/Getopt/GLD.pm | ||||
| 68 | 12 | 51µs | 3 | 17µs | my $meta = Mouse::Meta::Role->initialize(scalar caller); # spent 17µs making 3 calls to Mouse::Meta::Module::initialize, avg 6µs/call |
| 69 | my $code = pop; | ||||
| 70 | 3 | 42µs | for my $name($meta->_collect_methods(@_)) { # spent 42µs making 3 calls to Mouse::Meta::Module::_collect_methods, avg 14µs/call | ||
| 71 | 3 | 33µs | 3 | 14µs | $meta->add_around_method_modifier($name => $code); # spent 14µs making 3 calls to Mouse::Meta::Role::add_around_method_modifier, avg 5µs/call |
| 72 | } | ||||
| 73 | return; | ||||
| 74 | } | ||||
| 75 | |||||
| 76 | |||||
| 77 | sub super { | ||||
| 78 | return if !defined $Mouse::SUPER_BODY; | ||||
| 79 | $Mouse::SUPER_BODY->(@Mouse::SUPER_ARGS); | ||||
| 80 | } | ||||
| 81 | |||||
| 82 | sub override { | ||||
| 83 | # my($name, $code) = @_; | ||||
| 84 | Mouse::Meta::Role->initialize(scalar caller)->add_override_method_modifier(@_); | ||||
| 85 | return; | ||||
| 86 | } | ||||
| 87 | |||||
| 88 | # We keep the same errors messages as Moose::Role emits, here. | ||||
| 89 | sub inner { | ||||
| 90 | Carp::croak "Roles cannot support 'inner'"; | ||||
| 91 | } | ||||
| 92 | |||||
| 93 | sub augment { | ||||
| 94 | Carp::croak "Roles cannot support 'augment'"; | ||||
| 95 | } | ||||
| 96 | |||||
| 97 | # spent 611µs (148+463) within Mouse::Role::requires which was called 11 times, avg 56µs/call:
# once (16µs+51µs) by Mouse::Util::_try_load_one_class at line 28 of lib/Hailo/Role/Storage.pm
# once (15µs+50µs) by Mouse::Util::_try_load_one_class at line 20 of lib/Hailo/Role/Engine.pm
# once (16µs+48µs) by Mouse::Util::_try_load_one_class at line 34 of lib/Hailo/Role/Tokenizer.pm
# once (12µs+43µs) by Mouse::Util::_try_load_one_class at line 30 of lib/Hailo/Role/Storage.pm
# once (13µs+40µs) by Mouse::Util::_try_load_one_class at line 34 of lib/Hailo/Role/Storage.pm
# once (13µs+39µs) by Mouse::Util::_try_load_one_class at line 29 of lib/Hailo/Role/Storage.pm
# once (12µs+39µs) by Mouse::Util::_try_load_one_class at line 31 of lib/Hailo/Role/Storage.pm
# once (12µs+39µs) by Mouse::Util::_try_load_one_class at line 33 of lib/Hailo/Role/Storage.pm
# once (13µs+38µs) by Mouse::Util::_try_load_one_class at line 32 of lib/Hailo/Role/Storage.pm
# once (13µs+38µs) by Mouse::Util::_try_load_one_class at line 21 of lib/Hailo/Role/Engine.pm
# once (12µs+38µs) by Mouse::Util::_try_load_one_class at line 35 of lib/Hailo/Role/Tokenizer.pm | ||||
| 98 | 44 | 142µs | 11 | 59µs | my $meta = Mouse::Meta::Role->initialize(scalar caller); # spent 59µs making 11 calls to Mouse::Meta::Module::initialize, avg 5µs/call |
| 99 | $meta->throw_error("Must specify at least one method") unless @_; | ||||
| 100 | 11 | 404µs | $meta->add_required_methods(@_); # spent 404µs making 11 calls to Mouse::Meta::Role::add_required_methods, avg 37µs/call | ||
| 101 | return; | ||||
| 102 | } | ||||
| 103 | |||||
| 104 | sub excludes { | ||||
| 105 | Mouse::Util::not_supported(); | ||||
| 106 | } | ||||
| 107 | |||||
| 108 | # spent 1.87ms (326µs+1.55) within Mouse::Role::init_meta which was called 10 times, avg 187µs/call:
# 10 times (326µs+1.55ms) by Mouse::Exporter::do_import at line 181 of Mouse/Exporter.pm, avg 187µs/call | ||||
| 109 | 80 | 411µs | shift; | ||
| 110 | my %args = @_; | ||||
| 111 | |||||
| 112 | my $class = $args{for_class} | ||||
| 113 | or Carp::confess("Cannot call init_meta without specifying a for_class"); | ||||
| 114 | |||||
| 115 | my $metaclass = $args{metaclass} || 'Mouse::Meta::Role'; | ||||
| 116 | |||||
| 117 | 10 | 325µs | my $meta = $metaclass->initialize($class); # spent 325µs making 10 calls to Mouse::Meta::Module::initialize, avg 32µs/call | ||
| 118 | |||||
| 119 | # spent 14µs (9+6) within MouseX::Getopt::GLD::meta which was called:
# once (9µs+6µs) by hailo::BEGIN@8 at line 18 of lib/Hailo/Command.pm | ||||
| 120 | 1 | 8µs | 1 | 6µs | $metaclass->initialize(ref($_[0]) || $_[0]); # spent 6µs making 1 call to Mouse::Meta::Module::initialize |
| 121 | 10 | 92µs | }); # spent 92µs making 10 calls to Mouse::Meta::Module::add_method, avg 9µs/call | ||
| 122 | |||||
| 123 | # make a role type for each Mouse role | ||||
| 124 | 20 | 1.13ms | Mouse::Util::TypeConstraints::role_type($class) # spent 954µs making 7 calls to Mouse::Util::TypeConstraints::role_type, avg 136µs/call
# spent 169µs making 10 calls to Mouse::Util::TypeConstraints::find_type_constraint, avg 17µs/call
# spent 6µs making 3 calls to Mouse::Meta::TypeConstraint::_identity, avg 2µs/call | ||
| 125 | unless Mouse::Util::TypeConstraints::find_type_constraint($class); | ||||
| 126 | |||||
| 127 | return $meta; | ||||
| 128 | } | ||||
| 129 | |||||
| 130 | 1 | 6µs | 1; | ||
| 131 | |||||
| 132 | __END__ |