← Index
NYTProf Performance Profile   « block view • line view • sub view »
For reply.pl
  Run on Thu Oct 21 22:40:13 2010
Reported on Thu Oct 21 22:44:43 2010

Filename/home/hinrik/perl5/perlbrew/perls/perl-5.13.5/lib/site_perl/5.13.5/x86_64-linux/Mouse/Role.pm
StatementsExecuted 135 statements in 1.15ms
Subroutines
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
884176µs308µsMouse::Role::::has Mouse::Role::has
11113149µs635µsMouse::Role::::requires Mouse::Role::requires
411142µs539µsMouse::Role::::init_meta Mouse::Role::init_meta
11130µs41µsMouse::Role::::BEGIN@2 Mouse::Role::BEGIN@2
11116µs71µsMouse::Role::::BEGIN@6 Mouse::Role::BEGIN@6
11114µs55µsMouse::Role::::BEGIN@7 Mouse::Role::BEGIN@7
1116µs6µsMouse::Role::::BEGIN@9 Mouse::Role::BEGIN@9
0000s0sHailo::Role::Arguments::::metaHailo::Role::Arguments::meta
0000s0sHailo::Role::Engine::::meta Hailo::Role::Engine::meta
0000s0sHailo::Role::Storage::::meta Hailo::Role::Storage::meta
0000s0sHailo::Role::Tokenizer::::metaHailo::Role::Tokenizer::meta
0000s0sMouse::Role::::__ANON__[:121] Mouse::Role::__ANON__[:121]
0000s0sMouse::Role::::after Mouse::Role::after
0000s0sMouse::Role::::around Mouse::Role::around
0000s0sMouse::Role::::augment Mouse::Role::augment
0000s0sMouse::Role::::before Mouse::Role::before
0000s0sMouse::Role::::excludes Mouse::Role::excludes
0000s0sMouse::Role::::extends Mouse::Role::extends
0000s0sMouse::Role::::inner Mouse::Role::inner
0000s0sMouse::Role::::override Mouse::Role::override
0000s0sMouse::Role::::super Mouse::Role::super
0000s0sMouse::Role::::with Mouse::Role::with
Call graph for these subroutines as a Graphviz dot language file.
Line State
ments
Time
on line
Calls Time
in subs
Code
1package Mouse::Role;
2242µs253µs
# spent 41µs (30+11) within Mouse::Role::BEGIN@2 which was called: # once (30µs+11µs) by Any::Moose::_install_module at line 2
use Mouse::Exporter; # enables strict and warnings
# spent 41µs making 1 call to Mouse::Role::BEGIN@2 # spent 11µs making 1 call to Mouse::Exporter::import
3
411µsour $VERSION = '0.80';
5
6231µs2125µs
# spent 71µs (16+55) within Mouse::Role::BEGIN@6 which was called: # once (16µs+55µs) by Any::Moose::_install_module at line 6
use Carp qw(confess);
# spent 71µs making 1 call to Mouse::Role::BEGIN@6 # spent 55µs making 1 call to Exporter::import
7228µs297µs
# spent 55µs (14+41) within Mouse::Role::BEGIN@7 which was called: # once (14µs+41µs) by Any::Moose::_install_module at line 7
use Scalar::Util qw(blessed);
# spent 55µs making 1 call to Mouse::Role::BEGIN@7 # spent 42µs making 1 call to Exporter::import
8
92536µs16µs
# spent 6µs within Mouse::Role::BEGIN@9 which was called: # once (6µs+0s) by Any::Moose::_install_module at line 9
use Mouse ();
# spent 6µs making 1 call to Mouse::Role::BEGIN@9
10
1118µs1283µsMouse::Exporter->setup_import_methods(
# spent 283µ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
27sub extends {
28 Carp::croak "Roles do not support 'extends'";
29}
30
31sub with {
32 Mouse::Util::apply_all_roles(scalar(caller), @_);
33 return;
34}
35
36
# spent 308µs (176+132) within Mouse::Role::has which was called 8 times, avg 39µs/call: # once (31µs+28µs) by Mouse::Util::_try_load_one_class at line 22 of Hailo/Role/Tokenizer.pm # once (26µs+20µs) by Mouse::Util::_try_load_one_class at line 13 of Hailo/Role/Storage.pm # once (24µs+17µs) by Mouse::Util::_try_load_one_class at line 13 of Hailo/Role/Arguments.pm # once (24µs+16µs) by Mouse::Util::_try_load_one_class at line 13 of Hailo/Role/Engine.pm # once (18µs+14µs) by Mouse::Util::_try_load_one_class at line 23 of Hailo/Role/Storage.pm # once (18µs+13µs) by Mouse::Util::_try_load_one_class at line 19 of Hailo/Role/Engine.pm # once (18µs+12µs) by Mouse::Util::_try_load_one_class at line 18 of Hailo/Role/Storage.pm # once (17µs+12µs) by Mouse::Util::_try_load_one_class at line 29 of Hailo/Role/Storage.pm
sub has {
37840µs851µs my $meta = Mouse::Meta::Role->initialize(scalar caller);
# spent 51µs making 8 calls to Mouse::Meta::Module::initialize, avg 6µs/call
38810µs my $name = shift;
39
40813µs $meta->throw_error(q{Usage: has 'name' => ( key => value, ... )})
41 if @_ % 2; # odd number of arguments
42
43822µs for my $n(ref($name) ? @{$name} : $name){
44851µs881µs $meta->add_attribute($n => @_);
# spent 81µs making 8 calls to Mouse::Meta::Role::add_attribute, avg 10µs/call
45 }
46834µs return;
47}
48
49sub 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
58sub 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
67sub around {
68 my $meta = Mouse::Meta::Role->initialize(scalar caller);
69 my $code = pop;
70 for my $name($meta->_collect_methods(@_)) {
71 $meta->add_around_method_modifier($name => $code);
72 }
73 return;
74}
75
76
77sub super {
78 return if !defined $Mouse::SUPER_BODY;
79 $Mouse::SUPER_BODY->(@Mouse::SUPER_ARGS);
80}
81
82sub 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.
89sub inner {
90 Carp::croak "Roles cannot support 'inner'";
91}
92
93sub augment {
94 Carp::croak "Roles cannot support 'augment'";
95}
96
97
# spent 635µs (149+486) within Mouse::Role::requires which was called 11 times, avg 58µs/call: # once (17µs+63µs) by Mouse::Util::_try_load_one_class at line 34 of Hailo/Role/Storage.pm # once (15µs+51µs) by Mouse::Util::_try_load_one_class at line 40 of Hailo/Role/Tokenizer.pm # once (15µs+46µs) by Mouse::Util::_try_load_one_class at line 26 of Hailo/Role/Engine.pm # once (13µs+49µs) by Mouse::Util::_try_load_one_class at line 36 of Hailo/Role/Storage.pm # once (12µs+42µs) by Mouse::Util::_try_load_one_class at line 38 of Hailo/Role/Storage.pm # once (13µs+41µs) by Mouse::Util::_try_load_one_class at line 39 of Hailo/Role/Storage.pm # once (13µs+40µs) by Mouse::Util::_try_load_one_class at line 40 of Hailo/Role/Storage.pm # once (13µs+40µs) by Mouse::Util::_try_load_one_class at line 41 of Hailo/Role/Tokenizer.pm # once (13µs+40µs) by Mouse::Util::_try_load_one_class at line 35 of Hailo/Role/Storage.pm # once (12µs+38µs) by Mouse::Util::_try_load_one_class at line 37 of Hailo/Role/Storage.pm # once (12µs+37µs) by Mouse::Util::_try_load_one_class at line 27 of Hailo/Role/Engine.pm
sub requires {
981146µs1161µs my $meta = Mouse::Meta::Role->initialize(scalar caller);
# spent 61µs making 11 calls to Mouse::Meta::Module::initialize, avg 6µs/call
991112µs $meta->throw_error("Must specify at least one method") unless @_;
1001142µs11426µs $meta->add_required_methods(@_);
# spent 426µs making 11 calls to Mouse::Meta::Role::add_required_methods, avg 39µs/call
1011144µs return;
102}
103
104sub excludes {
105 Mouse::Util::not_supported();
106}
107
108
# spent 539µs (142+397) within Mouse::Role::init_meta which was called 4 times, avg 135µs/call: # 4 times (142µs+397µs) by Mouse::Exporter::do_import at line 181 of Mouse/Exporter.pm, avg 135µs/call
sub init_meta{
10944µs shift;
110411µs my %args = @_;
111
11246µs my $class = $args{for_class}
113 or Carp::confess("Cannot call init_meta without specifying a for_class");
114
11546µs my $metaclass = $args{metaclass} || 'Mouse::Meta::Role';
116
117426µs4131µs my $meta = $metaclass->initialize($class);
# spent 131µs making 4 calls to Mouse::Meta::Module::initialize, avg 33µs/call
118
119 $meta->add_method(meta => sub{
120 $metaclass->initialize(ref($_[0]) || $_[0]);
121470µs441µs });
# spent 41µs making 4 calls to Mouse::Meta::Module::add_method, avg 10µs/call
122
123 # make a role type for each Mouse role
124444µs8226µs Mouse::Util::TypeConstraints::role_type($class)
# spent 146µs making 1 call to Mouse::Util::TypeConstraints::role_type # spent 74µs making 4 calls to Mouse::Util::TypeConstraints::find_type_constraint, avg 18µs/call # spent 7µs making 3 calls to Mouse::Meta::TypeConstraint::_identity, avg 2µs/call
125 unless Mouse::Util::TypeConstraints::find_type_constraint($class);
126
127418µs return $meta;
128}
129
13016µs1;
131
132__END__