Filename | /opt/perl-5.18.1/lib/site_perl/5.18.1/darwin-thread-multi-2level/Mouse.pm |
Statements | Executed 54 statements in 2.50ms |
Calls | P | F | Exclusive Time |
Inclusive Time |
Subroutine |
---|---|---|---|---|---|
1 | 1 | 1 | 6.49ms | 9.94ms | BEGIN@4 | Mouse::
1 | 1 | 1 | 3.24ms | 3.33ms | BEGIN@14 | Mouse::
1 | 1 | 1 | 3.14ms | 3.69ms | BEGIN@18 | Mouse::
1 | 1 | 1 | 2.23ms | 4.07ms | BEGIN@16 | Mouse::
1 | 1 | 1 | 956µs | 1.03ms | BEGIN@15 | Mouse::
1 | 1 | 1 | 160µs | 226µs | BEGIN@17 | Mouse::
1 | 1 | 1 | 37µs | 255µs | init_meta | Mouse::
1 | 1 | 1 | 20µs | 20µs | BEGIN@2 | Mouse::
1 | 1 | 1 | 19µs | 324µs | has | Mouse::
1 | 1 | 1 | 10µs | 10µs | BEGIN@13 | Mouse::
1 | 1 | 1 | 7µs | 10µs | meta | Foo::Mouse::
1 | 1 | 1 | 4µs | 4µs | BEGIN@8 | Mouse::
1 | 1 | 1 | 4µs | 4µs | BEGIN@11 | Mouse::
1 | 1 | 1 | 3µs | 3µs | BEGIN@9 | Mouse::
0 | 0 | 0 | 0s | 0s | __ANON__[:137] | Mouse::
0 | 0 | 0 | 0s | 0s | after | Mouse::
0 | 0 | 0 | 0s | 0s | around | Mouse::
0 | 0 | 0 | 0s | 0s | augment | Mouse::
0 | 0 | 0 | 0s | 0s | before | Mouse::
0 | 0 | 0 | 0s | 0s | extends | Mouse::
0 | 0 | 0 | 0s | 0s | inner | Mouse::
0 | 0 | 0 | 0s | 0s | override | Mouse::
0 | 0 | 0 | 0s | 0s | super | Mouse::
0 | 0 | 0 | 0s | 0s | with | Mouse::
Line | State ments |
Time on line |
Calls | Time in subs |
Code |
---|---|---|---|---|---|
1 | package Mouse; | ||||
2 | 2 | 57µs | 1 | 20µs | # spent 20µs within Mouse::BEGIN@2 which was called:
# once (20µs+0s) by Foo::Mouse::BEGIN@77 at line 2 # spent 20µs making 1 call to Mouse::BEGIN@2 |
3 | |||||
4 | 2 | 138µs | 2 | 9.94ms | # spent 9.94ms (6.49+3.44) within Mouse::BEGIN@4 which was called:
# once (6.49ms+3.44ms) by Foo::Mouse::BEGIN@77 at line 4 # spent 9.94ms making 1 call to Mouse::BEGIN@4
# spent 6µs making 1 call to Mouse::Exporter::import |
5 | |||||
6 | 1 | 800ns | our $VERSION = '2.1.0'; | ||
7 | |||||
8 | 2 | 25µs | 1 | 4µs | # spent 4µs within Mouse::BEGIN@8 which was called:
# once (4µs+0s) by Foo::Mouse::BEGIN@77 at line 8 # spent 4µs making 1 call to Mouse::BEGIN@8 |
9 | 2 | 25µs | 1 | 3µs | # spent 3µs within Mouse::BEGIN@9 which was called:
# once (3µs+0s) by Foo::Mouse::BEGIN@77 at line 9 # spent 3µs making 1 call to Mouse::BEGIN@9 |
10 | |||||
11 | 2 | 27µs | 1 | 4µs | # spent 4µs within Mouse::BEGIN@11 which was called:
# once (4µs+0s) by Foo::Mouse::BEGIN@77 at line 11 # spent 4µs making 1 call to Mouse::BEGIN@11 |
12 | |||||
13 | 2 | 36µs | 1 | 10µs | # spent 10µs within Mouse::BEGIN@13 which was called:
# once (10µs+0s) by Foo::Mouse::BEGIN@77 at line 13 # spent 10µs making 1 call to Mouse::BEGIN@13 |
14 | 2 | 132µs | 1 | 3.33ms | # spent 3.33ms (3.24+98µs) within Mouse::BEGIN@14 which was called:
# once (3.24ms+98µs) by Foo::Mouse::BEGIN@77 at line 14 # spent 3.33ms making 1 call to Mouse::BEGIN@14 |
15 | 2 | 119µs | 1 | 1.03ms | # spent 1.03ms (956µs+70µs) within Mouse::BEGIN@15 which was called:
# once (956µs+70µs) by Foo::Mouse::BEGIN@77 at line 15 # spent 1.03ms making 1 call to Mouse::BEGIN@15 |
16 | 2 | 127µs | 1 | 4.07ms | # spent 4.07ms (2.23+1.85) within Mouse::BEGIN@16 which was called:
# once (2.23ms+1.85ms) by Foo::Mouse::BEGIN@77 at line 16 # spent 4.07ms making 1 call to Mouse::BEGIN@16 |
17 | 2 | 123µs | 1 | 226µs | # spent 226µs (160+66) within Mouse::BEGIN@17 which was called:
# once (160µs+66µs) by Foo::Mouse::BEGIN@77 at line 17 # spent 226µs making 1 call to Mouse::BEGIN@17 |
18 | 2 | 910µs | 1 | 3.69ms | # spent 3.69ms (3.14+551µs) within Mouse::BEGIN@18 which was called:
# once (3.14ms+551µs) by Foo::Mouse::BEGIN@77 at line 18 # spent 3.69ms making 1 call to Mouse::BEGIN@18 |
19 | |||||
20 | 1 | 6µs | 1 | 113µs | Mouse::Exporter->setup_import_methods( # spent 113µs making 1 call to Mouse::Exporter::setup_import_methods |
21 | as_is => [qw( | ||||
22 | extends with | ||||
23 | has | ||||
24 | before after around | ||||
25 | override super | ||||
26 | augment inner | ||||
27 | ), | ||||
28 | \&Scalar::Util::blessed, | ||||
29 | \&Carp::confess, | ||||
30 | ], | ||||
31 | ); | ||||
32 | |||||
33 | |||||
34 | sub extends { | ||||
35 | Mouse::Meta::Class->initialize(scalar caller)->superclasses(@_); | ||||
36 | return; | ||||
37 | } | ||||
38 | |||||
39 | sub with { | ||||
40 | Mouse::Util::apply_all_roles(scalar(caller), @_); | ||||
41 | return; | ||||
42 | } | ||||
43 | |||||
44 | # spent 324µs (19+305) within Mouse::has which was called:
# once (19µs+305µs) by main::RUNTIME at line 78 of fastest.pl | ||||
45 | 1 | 5µs | 1 | 5µs | my $meta = Mouse::Meta::Class->initialize(scalar caller); # spent 5µs making 1 call to Mouse::Meta::Module::initialize |
46 | 1 | 700ns | my $name = shift; | ||
47 | |||||
48 | 1 | 1µs | $meta->throw_error(q{Usage: has 'name' => ( key => value, ... )}) | ||
49 | if @_ % 2; # odd number of arguments | ||||
50 | |||||
51 | 1 | 1µs | for my $n(ref($name) ? @{$name} : $name){ | ||
52 | 1 | 3µs | 1 | 300µs | $meta->add_attribute($n => @_); # spent 300µs making 1 call to Mouse::Meta::Class::add_attribute |
53 | } | ||||
54 | 1 | 4µs | return; | ||
55 | } | ||||
56 | |||||
57 | sub before { | ||||
58 | my $meta = Mouse::Meta::Class->initialize(scalar caller); | ||||
59 | my $code = pop; | ||||
60 | for my $name($meta->_collect_methods(@_)) { | ||||
61 | $meta->add_before_method_modifier($name => $code); | ||||
62 | } | ||||
63 | return; | ||||
64 | 1 | 2µs | } | ||
65 | 1 | 400ns | |||
66 | 1 | 684µs | 1 | 672µs | sub after { # spent 672µs making 1 call to XSLoader::load |
67 | 1 | 4µs | 1 | 56µs | my $meta = Mouse::Meta::Class->initialize(scalar caller); # spent 56µs making 1 call to Mouse::Exporter::do_import |
68 | 1 | 3µs | 1 | 34µs | my $code = pop; # spent 34µs making 1 call to Mouse::Exporter::do_import |
69 | 1 | 3µs | 1 | 47µs | for my $name($meta->_collect_methods(@_)) { # spent 47µs making 1 call to Mouse::Exporter::do_import |
70 | 1 | 11µs | $meta->add_after_method_modifier($name => $code); | ||
71 | } | ||||
72 | return; | ||||
73 | } | ||||
74 | |||||
75 | sub around { | ||||
76 | my $meta = Mouse::Meta::Class->initialize(scalar caller); | ||||
77 | my $code = pop; | ||||
78 | for my $name($meta->_collect_methods(@_)) { | ||||
79 | $meta->add_around_method_modifier($name => $code); | ||||
80 | } | ||||
81 | return; | ||||
82 | } | ||||
83 | |||||
84 | 1 | 100ns | our $SUPER_PACKAGE; | ||
85 | 1 | 0s | our $SUPER_BODY; | ||
86 | 1 | 200ns | our @SUPER_ARGS; | ||
87 | |||||
88 | sub super { | ||||
89 | # This check avoids a recursion loop - see | ||||
90 | # t/100_bugs/020_super_recursion.t | ||||
91 | return if defined $SUPER_PACKAGE && $SUPER_PACKAGE ne caller(); | ||||
92 | return if !defined $SUPER_BODY; | ||||
93 | $SUPER_BODY->(@SUPER_ARGS); | ||||
94 | } | ||||
95 | |||||
96 | sub override { | ||||
97 | # my($name, $method) = @_; | ||||
98 | Mouse::Meta::Class->initialize(scalar caller)->add_override_method_modifier(@_); | ||||
99 | } | ||||
100 | |||||
101 | 1 | 100ns | our %INNER_BODY; | ||
102 | 1 | 100ns | our %INNER_ARGS; | ||
103 | |||||
104 | sub inner { | ||||
105 | my $pkg = caller(); | ||||
106 | if ( my $body = $INNER_BODY{$pkg} ) { | ||||
107 | my $args = $INNER_ARGS{$pkg}; | ||||
108 | local $INNER_ARGS{$pkg}; | ||||
109 | local $INNER_BODY{$pkg}; | ||||
110 | return $body->(@{$args}); | ||||
111 | } | ||||
112 | else { | ||||
113 | return; | ||||
114 | } | ||||
115 | } | ||||
116 | |||||
117 | sub augment { | ||||
118 | #my($name, $method) = @_; | ||||
119 | Mouse::Meta::Class->initialize(scalar caller)->add_augment_method_modifier(@_); | ||||
120 | return; | ||||
121 | } | ||||
122 | |||||
123 | # spent 255µs (37+218) within Mouse::init_meta which was called:
# once (37µs+218µs) by Mouse::Exporter::do_import at line 182 of Mouse/Exporter.pm | ||||
124 | 1 | 200ns | shift; | ||
125 | 1 | 1µs | my %args = @_; | ||
126 | |||||
127 | 1 | 400ns | my $class = $args{for_class} | ||
128 | or confess("Cannot call init_meta without specifying a for_class"); | ||||
129 | |||||
130 | 1 | 400ns | my $base_class = $args{base_class} || 'Mouse::Object'; | ||
131 | 1 | 300ns | my $metaclass = $args{metaclass} || 'Mouse::Meta::Class'; | ||
132 | |||||
133 | 1 | 4µs | 1 | 21µs | my $meta = $metaclass->initialize($class); # spent 21µs making 1 call to Mouse::Meta::Module::initialize |
134 | |||||
135 | # spent 10µs (7+3) within Foo::Mouse::meta which was called:
# once (7µs+3µs) by main::RUNTIME at line 79 of fastest.pl | ||||
136 | 1 | 5µs | 1 | 3µs | return $metaclass->initialize(ref($_[0]) || $_[0]); # spent 3µs making 1 call to Mouse::Meta::Module::initialize |
137 | 1 | 22µs | 1 | 10µs | }); # spent 10µs making 1 call to Mouse::Meta::Module::add_method |
138 | |||||
139 | 1 | 3µs | 2 | 74µs | $meta->superclasses($base_class) # spent 74µs making 2 calls to Mouse::Meta::Class::superclasses, avg 37µs/call |
140 | unless $meta->superclasses; | ||||
141 | |||||
142 | # make a class type for each Mouse class | ||||
143 | 1 | 3µs | 2 | 112µs | Mouse::Util::TypeConstraints::class_type($class) # spent 97µs making 1 call to Mouse::Util::TypeConstraints::class_type
# spent 15µs making 1 call to Mouse::Util::TypeConstraints::find_type_constraint |
144 | unless Mouse::Util::TypeConstraints::find_type_constraint($class); | ||||
145 | |||||
146 | 1 | 4µs | return $meta; | ||
147 | } | ||||
148 | |||||
149 | 1 | 9µs | 1; | ||
150 | __END__ |