Filename | /Users/ether/.perlbrew/libs/36.0@std/lib/perl5/YAML/PP/Schema.pm |
Statements | Executed 575164 statements in 702ms |
Calls | P | F | Exclusive Time |
Inclusive Time |
Subroutine |
---|---|---|---|---|---|
20941 | 1 | 1 | 453ms | 668ms | load_scalar | YAML::PP::Schema::
70999 | 1 | 1 | 89.3ms | 89.3ms | CORE:regcomp (opcode) | YAML::PP::Schema::
71001 | 3 | 1 | 83.2ms | 83.2ms | CORE:match (opcode) | YAML::PP::Schema::
6939 | 1 | 1 | 34.8ms | 39.3ms | create_mapping | YAML::PP::Schema::
28553 | 4 | 1 | 17.1ms | 17.1ms | resolvers | YAML::PP::Schema::
645 | 1 | 1 | 3.72ms | 4.07ms | create_sequence | YAML::PP::Schema::
581 | 1 | 1 | 2.45ms | 4.09ms | _bool_jsonpp_true | YAML::PP::Schema::
408 | 1 | 1 | 1.67ms | 2.74ms | _bool_jsonpp_false | YAML::PP::Schema::
1 | 1 | 1 | 1.45ms | 1.93ms | BEGIN@9 | YAML::PP::Schema::
1 | 1 | 1 | 953µs | 1.03ms | BEGIN@5 | YAML::PP::Schema::
28 | 11 | 1 | 401µs | 422µs | add_resolver | YAML::PP::Schema::
28 | 6 | 1 | 189µs | 211µs | add_representer | YAML::PP::Schema::
1 | 1 | 1 | 59µs | 3.08ms | load_subschemas | YAML::PP::Schema::
1 | 1 | 1 | 50µs | 50µs | new | YAML::PP::Schema::
1 | 1 | 1 | 29µs | 32µs | BEGIN@1 | YAML::PP::
28 | 1 | 1 | 22µs | 22µs | representers | YAML::PP::Schema::
1 | 1 | 1 | 11µs | 11µs | yaml_version | YAML::PP::Schema::
1 | 1 | 1 | 7µs | 9µs | BEGIN@4 | YAML::PP::Schema::
1 | 1 | 1 | 6µs | 17µs | BEGIN@11 | YAML::PP::Schema::
3 | 1 | 1 | 5µs | 5µs | true | YAML::PP::Schema::
1 | 1 | 1 | 4µs | 28µs | BEGIN@2 | YAML::PP::
2 | 1 | 1 | 3µs | 3µs | bool_class | YAML::PP::Schema::
3 | 1 | 1 | 2µs | 2µs | false | YAML::PP::Schema::
0 | 0 | 0 | 0s | 0s | _bool_booleanpm_false | YAML::PP::Schema::
0 | 0 | 0 | 0s | 0s | _bool_booleanpm_true | YAML::PP::Schema::
0 | 0 | 0 | 0s | 0s | _bool_perl_false | YAML::PP::Schema::
0 | 0 | 0 | 0s | 0s | _bool_perl_true | YAML::PP::Schema::
0 | 0 | 0 | 0s | 0s | add_collection_resolver | YAML::PP::Schema::
0 | 0 | 0 | 0s | 0s | add_mapping_resolver | YAML::PP::Schema::
0 | 0 | 0 | 0s | 0s | add_sequence_resolver | YAML::PP::Schema::
Line | State ments |
Time on line |
Calls | Time in subs |
Code |
---|---|---|---|---|---|
1 | 2 | 28µs | 2 | 35µs | # spent 32µs (29+3) within YAML::PP::BEGIN@1 which was called:
# once (29µs+3µs) by YAML::PP::BEGIN@8 at line 1 # spent 32µs making 1 call to YAML::PP::BEGIN@1
# spent 3µs making 1 call to strict::import |
2 | 2 | 48µs | 2 | 52µs | # spent 28µs (4+24) within YAML::PP::BEGIN@2 which was called:
# once (4µs+24µs) by YAML::PP::BEGIN@8 at line 2 # spent 28µs making 1 call to YAML::PP::BEGIN@2
# spent 24µs making 1 call to warnings::import |
3 | package YAML::PP::Schema; | ||||
4 | 2 | 19µs | 2 | 11µs | # spent 9µs (7+2) within YAML::PP::Schema::BEGIN@4 which was called:
# once (7µs+2µs) by YAML::PP::BEGIN@8 at line 4 # spent 9µs making 1 call to YAML::PP::Schema::BEGIN@4
# spent 2µs making 1 call to B::import |
5 | 2 | 337µs | 1 | 1.03ms | # spent 1.03ms (953µs+73µs) within YAML::PP::Schema::BEGIN@5 which was called:
# once (953µs+73µs) by YAML::PP::BEGIN@8 at line 5 # spent 1.03ms making 1 call to YAML::PP::Schema::BEGIN@5 |
6 | |||||
7 | 1 | 0s | our $VERSION = '0.035'; # VERSION | ||
8 | |||||
9 | 2 | 692µs | 2 | 1.97ms | # spent 1.93ms (1.45+480µs) within YAML::PP::Schema::BEGIN@9 which was called:
# once (1.45ms+480µs) by YAML::PP::BEGIN@8 at line 9 # spent 1.93ms making 1 call to YAML::PP::Schema::BEGIN@9
# spent 41µs making 1 call to Exporter::import |
10 | |||||
11 | 2 | 2.64ms | 2 | 28µs | # spent 17µs (6+11) within YAML::PP::Schema::BEGIN@11 which was called:
# once (6µs+11µs) by YAML::PP::BEGIN@8 at line 11 # spent 17µs making 1 call to YAML::PP::Schema::BEGIN@11
# spent 11µs making 1 call to Exporter::import |
12 | |||||
13 | # spent 50µs within YAML::PP::Schema::new which was called:
# once (50µs+0s) by YAML::PP::new at line 55 of YAML/PP.pm | ||||
14 | 1 | 2µs | my ($class, %args) = @_; | ||
15 | |||||
16 | 1 | 1µs | my $yaml_version = delete $args{yaml_version}; | ||
17 | 1 | 2µs | my $bool = delete $args{boolean}; | ||
18 | 1 | 1µs | $bool = 'perl' unless defined $bool; | ||
19 | 1 | 0s | if (keys %args) { | ||
20 | die "Unexpected arguments: " . join ', ', sort keys %args; | ||||
21 | } | ||||
22 | 1 | 1µs | my $true; | ||
23 | my $false; | ||||
24 | my @bool_class; | ||||
25 | 1 | 5µs | my @bools = split m/,/, $bool; | ||
26 | 1 | 0s | for my $b (@bools) { | ||
27 | 1 | 3µs | if ($b eq '*') { | ||
28 | push @bool_class, ('boolean', 'JSON::PP::Boolean'); | ||||
29 | last; | ||||
30 | } | ||||
31 | elsif ($b eq 'JSON::PP') { | ||||
32 | 1 | 3µs | require JSON::PP; | ||
33 | 1 | 2µs | $true ||= \&_bool_jsonpp_true; | ||
34 | 1 | 1µs | $false ||= \&_bool_jsonpp_false; | ||
35 | 1 | 1µs | push @bool_class, 'JSON::PP::Boolean'; | ||
36 | } | ||||
37 | elsif ($b eq 'boolean') { | ||||
38 | require boolean; | ||||
39 | $true ||= \&_bool_booleanpm_true; | ||||
40 | $false ||= \&_bool_booleanpm_false; | ||||
41 | push @bool_class, 'boolean'; | ||||
42 | } | ||||
43 | elsif ($b eq 'perl') { | ||||
44 | $true ||= \&_bool_perl_true; | ||||
45 | $false ||= \&_bool_perl_false; | ||||
46 | } | ||||
47 | elsif ($b eq 'perl_experimental') { | ||||
48 | $true ||= \&_bool_perl_true; | ||||
49 | $false ||= \&_bool_perl_false; | ||||
50 | push @bool_class, 'perl_experimental'; | ||||
51 | } | ||||
52 | else { | ||||
53 | die "Invalid value for 'boolean': '$b'. Allowed: ('perl', 'boolean', 'JSON::PP')"; | ||||
54 | } | ||||
55 | } | ||||
56 | |||||
57 | 1 | 16µs | my %representers = ( | ||
58 | 'undef' => undef, | ||||
59 | flags => [], | ||||
60 | equals => {}, | ||||
61 | regex => [], | ||||
62 | class_equals => {}, | ||||
63 | class_matches => [], | ||||
64 | class_isa => [], | ||||
65 | scalarref => undef, | ||||
66 | refref => undef, | ||||
67 | coderef => undef, | ||||
68 | glob => undef, | ||||
69 | tied_equals => {}, | ||||
70 | ); | ||||
71 | 1 | 7µs | my $self = bless { | ||
72 | yaml_version => $yaml_version, | ||||
73 | resolvers => {}, | ||||
74 | representers => \%representers, | ||||
75 | true => $true, | ||||
76 | false => $false, | ||||
77 | bool_class => \@bool_class, | ||||
78 | }, $class; | ||||
79 | 1 | 7µs | return $self; | ||
80 | } | ||||
81 | |||||
82 | 28553 | 64.4ms | # spent 17.1ms within YAML::PP::Schema::resolvers which was called 28553 times, avg 600ns/call:
# 20941 times (12.3ms+0s) by YAML::PP::Schema::load_scalar at line 308, avg 586ns/call
# 6939 times (4.48ms+0s) by YAML::PP::Schema::create_mapping at line 392, avg 645ns/call
# 645 times (348µs+0s) by YAML::PP::Schema::create_sequence at line 362, avg 540ns/call
# 28 times (21µs+0s) by YAML::PP::Schema::add_resolver at line 153, avg 750ns/call | ||
83 | 28 | 41µs | # spent 22µs within YAML::PP::Schema::representers which was called 28 times, avg 786ns/call:
# 28 times (22µs+0s) by YAML::PP::Schema::add_representer at line 225, avg 786ns/call | ||
84 | |||||
85 | 3 | 10µs | # spent 5µs within YAML::PP::Schema::true which was called 3 times, avg 2µs/call:
# 3 times (5µs+0s) by YAML::PP::Schema::Core::register at line 35 of YAML/PP/Schema/Core.pm, avg 2µs/call | ||
86 | 3 | 30µs | # spent 2µs within YAML::PP::Schema::false which was called 3 times, avg 667ns/call:
# 3 times (2µs+0s) by YAML::PP::Schema::Core::register at line 39 of YAML/PP/Schema/Core.pm, avg 667ns/call | ||
87 | 2 | 9µs | # spent 3µs within YAML::PP::Schema::bool_class which was called 2 times, avg 2µs/call:
# 2 times (3µs+0s) by YAML::PP::Schema::Core::register at line 98 of YAML/PP/Schema/Core.pm, avg 2µs/call | ||
88 | 1 | 14µs | # spent 11µs within YAML::PP::Schema::yaml_version which was called:
# once (11µs+0s) by YAML::PP::Schema::load_subschemas at line 100 | ||
89 | |||||
90 | 1 | 1µs | my %LOADED_SCHEMA = ( | ||
91 | JSON => 1, | ||||
92 | ); | ||||
93 | 1 | 1µs | my %DEFAULT_SCHEMA = ( | ||
94 | '1.2' => 'Core', | ||||
95 | '1.1' => 'YAML1_1', | ||||
96 | ); | ||||
97 | |||||
98 | # spent 3.08ms (59µs+3.02) within YAML::PP::Schema::load_subschemas which was called:
# once (59µs+3.02ms) by YAML::PP::new at line 59 of YAML/PP.pm | ||||
99 | 1 | 1µs | my ($self, @schemas) = @_; | ||
100 | 1 | 2µs | 1 | 11µs | my $yaml_version = $self->yaml_version; # spent 11µs making 1 call to YAML::PP::Schema::yaml_version |
101 | 1 | 0s | my $i = 0; | ||
102 | 1 | 26µs | while ($i < @schemas) { | ||
103 | 1 | 0s | my $item = $schemas[ $i ]; | ||
104 | 1 | 2µs | if ($item eq '+') { | ||
105 | $item = $DEFAULT_SCHEMA{ $yaml_version }; | ||||
106 | } | ||||
107 | 1 | 0s | $i++; | ||
108 | 1 | 5µs | 1 | 1µs | if (blessed($item)) { # spent 1µs making 1 call to Scalar::Util::blessed |
109 | $item->register( | ||||
110 | schema => $self, | ||||
111 | ); | ||||
112 | next; | ||||
113 | } | ||||
114 | 1 | 0s | my @options; | ||
115 | 1 | 1µs | while ($i < @schemas | ||
116 | and ( | ||||
117 | $schemas[ $i ] =~ m/^[^A-Za-z]/ | ||||
118 | or | ||||
119 | $schemas[ $i ] =~ m/^[a-zA-Z0-9]+=/ | ||||
120 | ) | ||||
121 | ) { | ||||
122 | push @options, $schemas[ $i ]; | ||||
123 | $i++; | ||||
124 | } | ||||
125 | |||||
126 | 1 | 1µs | my $class; | ||
127 | 1 | 16µs | 1 | 5µs | if ($item =~ m/^\:(.*)/) { # spent 5µs making 1 call to YAML::PP::Schema::CORE:match |
128 | $class = "$1"; | ||||
129 | unless ($class =~ m/\A[A-Za-z0-9_:]+\z/) { | ||||
130 | die "Module name '$class' is invalid"; | ||||
131 | } | ||||
132 | Module::Load::load $class; | ||||
133 | } | ||||
134 | else { | ||||
135 | 1 | 2µs | $class = "YAML::PP::Schema::$item"; | ||
136 | 1 | 12µs | 1 | 9µs | unless ($class =~ m/\A[A-Za-z0-9_:]+\z/) { # spent 9µs making 1 call to YAML::PP::Schema::CORE:match |
137 | die "Module name '$class' is invalid"; | ||||
138 | } | ||||
139 | 1 | 6µs | 1 | 4µs | $LOADED_SCHEMA{ $item } ||= Module::Load::load $class; # spent 4µs making 1 call to Module::Load::load |
140 | } | ||||
141 | 1 | 9µs | 1 | 1.02ms | $class->register( # spent 1.02ms making 1 call to YAML::PP::Schema::Core::register |
142 | schema => $self, | ||||
143 | options => \@options, | ||||
144 | ); | ||||
145 | |||||
146 | } | ||||
147 | } | ||||
148 | |||||
149 | # spent 422µs (401+21) within YAML::PP::Schema::add_resolver which was called 28 times, avg 15µs/call:
# 6 times (64µs+4µs) by YAML::PP::Schema::Core::register at line 59 of YAML/PP/Schema/Core.pm, avg 11µs/call
# 5 times (106µs+5µs) by YAML::PP::Schema::Core::register at line 31 of YAML/PP/Schema/Core.pm, avg 22µs/call
# 3 times (45µs+5µs) by YAML::PP::Schema::Core::register at line 39 of YAML/PP/Schema/Core.pm, avg 17µs/call
# 3 times (43µs+2µs) by YAML::PP::Schema::Core::register at line 35 of YAML/PP/Schema/Core.pm, avg 15µs/call
# 3 times (28µs+1µs) by YAML::PP::Schema::Core::register at line 63 of YAML/PP/Schema/Core.pm, avg 10µs/call
# 3 times (25µs+0s) by YAML::PP::Schema::Core::register at line 67 of YAML/PP/Schema/Core.pm, avg 8µs/call
# once (41µs+0s) by YAML::PP::Schema::Core::register at line 40 of YAML/PP/Schema/Core.pm
# once (20µs+2µs) by YAML::PP::Schema::Core::register at line 44 of YAML/PP/Schema/Core.pm
# once (10µs+1000ns) by YAML::PP::Schema::Core::register at line 52 of YAML/PP/Schema/Core.pm
# once (10µs+1000ns) by YAML::PP::Schema::Core::register at line 70 of YAML/PP/Schema/Core.pm
# once (9µs+0s) by YAML::PP::Schema::Core::register at line 48 of YAML/PP/Schema/Core.pm | ||||
150 | 28 | 25µs | my ($self, %args) = @_; | ||
151 | 28 | 6µs | my $tag = $args{tag}; | ||
152 | 28 | 9µs | my $rule = $args{match}; | ||
153 | 28 | 37µs | 28 | 21µs | my $resolvers = $self->resolvers; # spent 21µs making 28 calls to YAML::PP::Schema::resolvers, avg 750ns/call |
154 | 28 | 8µs | my ($type, @rule) = @$rule; | ||
155 | 28 | 6µs | my $implicit = $args{implicit}; | ||
156 | 28 | 5µs | $implicit = 1 unless defined $implicit; | ||
157 | 28 | 14µs | my $resolver_list = []; | ||
158 | 28 | 13µs | if ($tag) { | ||
159 | 28 | 6µs | if (ref $tag eq 'Regexp') { | ||
160 | my $res = $resolvers->{tags} ||= []; | ||||
161 | push @$res, [ $tag, {} ]; | ||||
162 | push @$resolver_list, $res->[-1]->[1]; | ||||
163 | } | ||||
164 | else { | ||||
165 | 28 | 17µs | my $res = $resolvers->{tag}->{ $tag } ||= {}; | ||
166 | 28 | 15µs | push @$resolver_list, $res; | ||
167 | } | ||||
168 | } | ||||
169 | 28 | 8µs | if ($implicit) { | ||
170 | push @$resolver_list, $resolvers->{value} ||= {}; | ||||
171 | } | ||||
172 | 28 | 126µs | for my $res (@$resolver_list) { | ||
173 | 56 | 21µs | if ($type eq 'equals') { | ||
174 | 46 | 12µs | my ($match, $value) = @rule; | ||
175 | 46 | 38µs | unless (exists $res->{equals}->{ $match }) { | ||
176 | $res->{equals}->{ $match } = $value; | ||||
177 | } | ||||
178 | 46 | 16µs | next; | ||
179 | } | ||||
180 | elsif ($type eq 'regex') { | ||||
181 | 8 | 14µs | my ($match, $value) = @rule; | ||
182 | 8 | 28µs | push @{ $res->{regex} }, [ $match => $value ]; | ||
183 | } | ||||
184 | elsif ($type eq 'all') { | ||||
185 | 2 | 1µs | my ($value) = @rule; | ||
186 | 2 | 1µs | $res->{all} = $value; | ||
187 | } | ||||
188 | } | ||||
189 | } | ||||
190 | |||||
191 | sub add_sequence_resolver { | ||||
192 | my ($self, %args) = @_; | ||||
193 | return $self->add_collection_resolver(sequence => %args); | ||||
194 | } | ||||
195 | |||||
196 | sub add_mapping_resolver { | ||||
197 | my ($self, %args) = @_; | ||||
198 | return $self->add_collection_resolver(mapping => %args); | ||||
199 | } | ||||
200 | |||||
201 | sub add_collection_resolver { | ||||
202 | my ($self, $type, %args) = @_; | ||||
203 | my $tag = $args{tag}; | ||||
204 | my $implicit = $args{implicit}; | ||||
205 | my $resolvers = $self->resolvers; | ||||
206 | |||||
207 | if ($tag and ref $tag eq 'Regexp') { | ||||
208 | my $res = $resolvers->{ $type }->{tags} ||= []; | ||||
209 | push @$res, [ $tag, { | ||||
210 | on_create => $args{on_create}, | ||||
211 | on_data => $args{on_data}, | ||||
212 | } ]; | ||||
213 | } | ||||
214 | elsif ($tag) { | ||||
215 | my $res = $resolvers->{ $type }->{tag}->{ $tag } ||= { | ||||
216 | on_create => $args{on_create}, | ||||
217 | on_data => $args{on_data}, | ||||
218 | }; | ||||
219 | } | ||||
220 | } | ||||
221 | |||||
222 | # spent 211µs (189+22) within YAML::PP::Schema::add_representer which was called 28 times, avg 8µs/call:
# 23 times (153µs+14µs) by YAML::PP::Schema::Core::register at line 89 of YAML/PP/Schema/Core.pm, avg 7µs/call
# once (11µs+7µs) by YAML::PP::Schema::Core::register at line 75 of YAML/PP/Schema/Core.pm
# once (13µs+0s) by YAML::PP::Schema::Core::register at line 83 of YAML/PP/Schema/Core.pm
# once (5µs+1000ns) by YAML::PP::Schema::Core::register at line 93 of YAML/PP/Schema/Core.pm
# once (4µs+0s) by YAML::PP::Schema::Core::register at line 100 of YAML/PP/Schema/Core.pm
# once (3µs+0s) by YAML::PP::Schema::Core::register at line 79 of YAML/PP/Schema/Core.pm | ||||
223 | 28 | 17µs | my ($self, %args) = @_; | ||
224 | |||||
225 | 28 | 24µs | 28 | 22µs | my $representers = $self->representers; # spent 22µs making 28 calls to YAML::PP::Schema::representers, avg 786ns/call |
226 | 28 | 5µs | if (my $flags = $args{flags}) { | ||
227 | 2 | 1µs | my $rep = $representers->{flags}; | ||
228 | 2 | 1µs | push @$rep, \%args; | ||
229 | 2 | 6µs | return; | ||
230 | } | ||||
231 | 26 | 6µs | if (my $regex = $args{regex}) { | ||
232 | 1 | 1µs | my $rep = $representers->{regex}; | ||
233 | 1 | 1µs | push @$rep, \%args; | ||
234 | 1 | 2µs | return; | ||
235 | } | ||||
236 | 25 | 5µs | if (my $regex = $args{class_matches}) { | ||
237 | my $rep = $representers->{class_matches}; | ||||
238 | push @$rep, [ $args{class_matches}, $args{code} ]; | ||||
239 | return; | ||||
240 | } | ||||
241 | 25 | 7µs | if (my $class_equals = $args{class_equals}) { | ||
242 | 1 | 0s | if ($] >= 5.036000 and $class_equals eq 'perl_experimental') { | ||
243 | $representers->{bool} = { | ||||
244 | code => $args{code}, | ||||
245 | }; | ||||
246 | return; | ||||
247 | } | ||||
248 | 1 | 0s | my $rep = $representers->{class_equals}; | ||
249 | $rep->{ $class_equals } = { | ||||
250 | code => $args{code}, | ||||
251 | 1 | 1µs | }; | ||
252 | 1 | 3µs | return; | ||
253 | } | ||||
254 | 24 | 5µs | if (my $class_isa = $args{class_isa}) { | ||
255 | my $rep = $representers->{class_isa}; | ||||
256 | push @$rep, [ $args{class_isa}, $args{code} ]; | ||||
257 | return; | ||||
258 | } | ||||
259 | 24 | 9µs | if (my $tied_equals = $args{tied_equals}) { | ||
260 | my $rep = $representers->{tied_equals}; | ||||
261 | $rep->{ $tied_equals } = { | ||||
262 | code => $args{code}, | ||||
263 | }; | ||||
264 | return; | ||||
265 | } | ||||
266 | 24 | 8µs | if (defined(my $equals = $args{equals})) { | ||
267 | 23 | 6µs | my $rep = $representers->{equals}; | ||
268 | $rep->{ $equals } = { | ||||
269 | code => $args{code}, | ||||
270 | 23 | 33µs | }; | ||
271 | 23 | 45µs | return; | ||
272 | } | ||||
273 | 1 | 0s | if (defined(my $scalarref = $args{scalarref})) { | ||
274 | $representers->{scalarref} = { | ||||
275 | code => $args{code}, | ||||
276 | }; | ||||
277 | return; | ||||
278 | } | ||||
279 | 1 | 0s | if (defined(my $refref = $args{refref})) { | ||
280 | $representers->{refref} = { | ||||
281 | code => $args{code}, | ||||
282 | }; | ||||
283 | return; | ||||
284 | } | ||||
285 | 1 | 1µs | if (defined(my $coderef = $args{coderef})) { | ||
286 | $representers->{coderef} = { | ||||
287 | code => $args{code}, | ||||
288 | }; | ||||
289 | return; | ||||
290 | } | ||||
291 | 1 | 0s | if (defined(my $glob = $args{glob})) { | ||
292 | $representers->{glob} = { | ||||
293 | code => $args{code}, | ||||
294 | }; | ||||
295 | return; | ||||
296 | } | ||||
297 | 1 | 1µs | if (my $undef = $args{undefined}) { | ||
298 | 1 | 1µs | $representers->{undef} = $undef; | ||
299 | 1 | 3µs | return; | ||
300 | } | ||||
301 | } | ||||
302 | |||||
303 | # spent 668ms (453+215) within YAML::PP::Schema::load_scalar which was called 20941 times, avg 32µs/call:
# 20941 times (453ms+215ms) by YAML::PP::Constructor::scalar_event at line 287 of YAML/PP/Constructor.pm, avg 32µs/call | ||||
304 | 20941 | 4.55ms | my ($self, $constructor, $event) = @_; | ||
305 | 20941 | 6.31ms | my $tag = $event->{tag}; | ||
306 | 20941 | 7.09ms | my $value = $event->{value}; | ||
307 | |||||
308 | 20941 | 17.3ms | 20941 | 12.3ms | my $resolvers = $self->resolvers; # spent 12.3ms making 20941 calls to YAML::PP::Schema::resolvers, avg 586ns/call |
309 | 20941 | 2.48ms | my $res; | ||
310 | 20941 | 8.30ms | if ($tag) { | ||
311 | $res = $resolvers->{tag}->{ $tag }; | ||||
312 | if (not $res and my $matches = $resolvers->{tags}) { | ||||
313 | for my $match (@$matches) { | ||||
314 | my ($re, $rule) = @$match; | ||||
315 | if ($tag =~ $re) { | ||||
316 | $res = $rule; | ||||
317 | last; | ||||
318 | } | ||||
319 | } | ||||
320 | } | ||||
321 | } | ||||
322 | else { | ||||
323 | 20941 | 4.31ms | $res = $resolvers->{value}; | ||
324 | 20941 | 12.3ms | if ($event->{style} ne YAML_PLAIN_SCALAR_STYLE) { | ||
325 | return $value; | ||||
326 | } | ||||
327 | } | ||||
328 | |||||
329 | 18884 | 8.85ms | if (my $equals = $res->{equals}) { | ||
330 | 18884 | 17.9ms | if (exists $equals->{ $value }) { | ||
331 | 1024 | 507µs | my $res = $equals->{ $value }; | ||
332 | 1024 | 3.70ms | 989 | 6.84ms | if (ref $res eq 'CODE') { # spent 4.09ms making 581 calls to YAML::PP::Schema::_bool_jsonpp_true, avg 7µs/call
# spent 2.74ms making 408 calls to YAML::PP::Schema::_bool_jsonpp_false, avg 7µs/call |
333 | return $res->($constructor, $event); | ||||
334 | } | ||||
335 | 35 | 57µs | return $res; | ||
336 | } | ||||
337 | } | ||||
338 | 17860 | 7.26ms | if (my $regex = $res->{regex}) { | ||
339 | 17860 | 10.3ms | for my $item (@$regex) { | ||
340 | 70999 | 19.9ms | my ($re, $sub) = @$item; | ||
341 | 70999 | 362ms | 141998 | 172ms | my @matches = $value =~ $re; # spent 89.3ms making 70999 calls to YAML::PP::Schema::CORE:regcomp, avg 1µs/call
# spent 83.2ms making 70999 calls to YAML::PP::Schema::CORE:match, avg 1µs/call |
342 | 70999 | 30.9ms | 147 | 315µs | if (@matches) { # spent 315µs making 147 calls to YAML::PP::Schema::JSON::_to_int, avg 2µs/call |
343 | return $sub->($constructor, $event, \@matches); | ||||
344 | } | ||||
345 | } | ||||
346 | } | ||||
347 | 17713 | 6.73ms | if (my $catch_all = $res->{all}) { | ||
348 | 17713 | 59.9ms | 17713 | 23.4ms | if (ref $catch_all eq 'CODE') { # spent 23.4ms making 17713 calls to YAML::PP::Schema::Core::__ANON__[YAML/PP/Schema/Core.pm:70], avg 1µs/call |
349 | return $catch_all->($constructor, $event); | ||||
350 | } | ||||
351 | return $catch_all; | ||||
352 | } | ||||
353 | return $value; | ||||
354 | } | ||||
355 | |||||
356 | # spent 4.07ms (3.72+348µs) within YAML::PP::Schema::create_sequence which was called 645 times, avg 6µs/call:
# 645 times (3.72ms+348µs) by YAML::PP::Constructor::sequence_start_event at line 229 of YAML/PP/Constructor.pm, avg 6µs/call | ||||
357 | 645 | 297µs | my ($self, $constructor, $event) = @_; | ||
358 | 645 | 333µs | my $tag = $event->{tag}; | ||
359 | 645 | 290µs | my $data = []; | ||
360 | 645 | 110µs | my $on_data; | ||
361 | |||||
362 | 645 | 911µs | 645 | 348µs | my $resolvers = $self->resolvers->{sequence}; # spent 348µs making 645 calls to YAML::PP::Schema::resolvers, avg 540ns/call |
363 | 645 | 211µs | if ($tag) { | ||
364 | if (my $equals = $resolvers->{tag}->{ $tag }) { | ||||
365 | my $on_create = $equals->{on_create}; | ||||
366 | $on_data = $equals->{on_data}; | ||||
367 | $on_create and $data = $on_create->($constructor, $event); | ||||
368 | return ($data, $on_data); | ||||
369 | } | ||||
370 | if (my $matches = $resolvers->{tags}) { | ||||
371 | for my $match (@$matches) { | ||||
372 | my ($re, $actions) = @$match; | ||||
373 | my $on_create = $actions->{on_create}; | ||||
374 | if ($tag =~ $re) { | ||||
375 | $on_data = $actions->{on_data}; | ||||
376 | $on_create and $data = $on_create->($constructor, $event); | ||||
377 | return ($data, $on_data); | ||||
378 | } | ||||
379 | } | ||||
380 | } | ||||
381 | } | ||||
382 | |||||
383 | 645 | 1.53ms | return ($data, $on_data); | ||
384 | } | ||||
385 | |||||
386 | # spent 39.3ms (34.8+4.48) within YAML::PP::Schema::create_mapping which was called 6939 times, avg 6µs/call:
# 6939 times (34.8ms+4.48ms) by YAML::PP::Constructor::mapping_start_event at line 128 of YAML/PP/Constructor.pm, avg 6µs/call | ||||
387 | 6939 | 1.96ms | my ($self, $constructor, $event) = @_; | ||
388 | 6939 | 2.86ms | my $tag = $event->{tag}; | ||
389 | 6939 | 2.71ms | my $data = {}; | ||
390 | 6939 | 949µs | my $on_data; | ||
391 | |||||
392 | 6939 | 9.23ms | 6939 | 4.48ms | my $resolvers = $self->resolvers->{mapping}; # spent 4.48ms making 6939 calls to YAML::PP::Schema::resolvers, avg 645ns/call |
393 | 6939 | 1.28ms | if ($tag) { | ||
394 | if (my $equals = $resolvers->{tag}->{ $tag }) { | ||||
395 | my $on_create = $equals->{on_create}; | ||||
396 | $on_data = $equals->{on_data}; | ||||
397 | $on_create and $data = $on_create->($constructor, $event); | ||||
398 | return ($data, $on_data); | ||||
399 | } | ||||
400 | if (my $matches = $resolvers->{tags}) { | ||||
401 | for my $match (@$matches) { | ||||
402 | my ($re, $actions) = @$match; | ||||
403 | my $on_create = $actions->{on_create}; | ||||
404 | if ($tag =~ $re) { | ||||
405 | $on_data = $actions->{on_data}; | ||||
406 | $on_create and $data = $on_create->($constructor, $event); | ||||
407 | return ($data, $on_data); | ||||
408 | } | ||||
409 | } | ||||
410 | } | ||||
411 | } | ||||
412 | |||||
413 | 6939 | 15.0ms | return ($data, $on_data); | ||
414 | } | ||||
415 | |||||
416 | 581 | 2.68ms | 581 | 1.65ms | # spent 4.09ms (2.45+1.65) within YAML::PP::Schema::_bool_jsonpp_true which was called 581 times, avg 7µs/call:
# 581 times (2.45ms+1.65ms) by YAML::PP::Schema::load_scalar at line 332, avg 7µs/call # spent 1.65ms making 581 calls to JSON::PP::true, avg 3µs/call |
417 | |||||
418 | sub _bool_booleanpm_true { boolean::true() } | ||||
419 | |||||
420 | sub _bool_perl_true { !!1 } | ||||
421 | |||||
422 | 408 | 1.77ms | 408 | 1.07ms | # spent 2.74ms (1.67+1.07) within YAML::PP::Schema::_bool_jsonpp_false which was called 408 times, avg 7µs/call:
# 408 times (1.67ms+1.07ms) by YAML::PP::Schema::load_scalar at line 332, avg 7µs/call # spent 1.07ms making 408 calls to JSON::PP::false, avg 3µs/call |
423 | |||||
424 | sub _bool_booleanpm_false { boolean::false() } | ||||
425 | |||||
426 | sub _bool_perl_false { !!0 } | ||||
427 | |||||
428 | 1 | 5µs | 1; | ||
429 | |||||
430 | __END__ | ||||
# spent 83.2ms within YAML::PP::Schema::CORE:match which was called 71001 times, avg 1µs/call:
# 70999 times (83.2ms+0s) by YAML::PP::Schema::load_scalar at line 341, avg 1µs/call
# once (9µs+0s) by YAML::PP::Schema::load_subschemas at line 136
# once (5µs+0s) by YAML::PP::Schema::load_subschemas at line 127 | |||||
# spent 89.3ms within YAML::PP::Schema::CORE:regcomp which was called 70999 times, avg 1µs/call:
# 70999 times (89.3ms+0s) by YAML::PP::Schema::load_scalar at line 341, avg 1µs/call |