← Index
NYTProf Performance Profile   « line view »
For ../prof.pl
  Run on Wed Dec 14 16:10:05 2022
Reported on Wed Dec 14 16:12:58 2022

Filename/Users/ether/.perlbrew/libs/36.0@std/lib/perl5/YAML/PP/Constructor.pm
StatementsExecuted 604683 statements in 683ms
Subroutines
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
2094111234ms958msYAML::PP::Constructor::::scalar_eventYAML::PP::Constructor::scalar_event
693911138ms198msYAML::PP::Constructor::::mapping_end_eventYAML::PP::Constructor::mapping_end_event
693911126ms191msYAML::PP::Constructor::::mapping_start_eventYAML::PP::Constructor::mapping_start_event
69391156.5ms56.5msYAML::PP::Constructor::::__ANON__[:218]YAML::PP::Constructor::__ANON__[:218]
361117120.8ms20.8msYAML::PP::Constructor::::stackYAML::PP::Constructor::stack
285253119.3ms19.3msYAML::PP::Constructor::::preserve_aliasYAML::PP::Constructor::preserve_alias
285253117.6ms17.6msYAML::PP::Constructor::::schemaYAML::PP::Constructor::schema
209411116.4ms16.4msYAML::PP::Constructor::::preserve_scalar_styleYAML::PP::Constructor::preserve_scalar_style
6451111.2ms17.1msYAML::PP::Constructor::::sequence_start_eventYAML::PP::Constructor::sequence_start_event
6451111.2ms13.0msYAML::PP::Constructor::::sequence_end_eventYAML::PP::Constructor::sequence_end_event
6939117.44ms7.44msYAML::PP::Constructor::::preserve_orderYAML::PP::Constructor::preserve_order
7584216.78ms6.78msYAML::PP::Constructor::::preserve_flow_styleYAML::PP::Constructor::preserve_flow_style
645111.51ms1.51msYAML::PP::Constructor::::__ANON__[:270]YAML::PP::Constructor::__ANON__[:270]
11168µs72µsYAML::PP::Loader::::BEGIN@2.291 YAML::PP::Loader::BEGIN@2.291
22251µs78µsYAML::PP::Constructor::::initYAML::PP::Constructor::init
11139µs63µsYAML::PP::Constructor::::document_start_eventYAML::PP::Constructor::document_start_event
11134µs34µsYAML::PP::Constructor::::BEGIN@8YAML::PP::Constructor::BEGIN@8
11131µs85µsYAML::PP::Constructor::::newYAML::PP::Constructor::new
11130µs91µsYAML::PP::Constructor::::BEGIN@9YAML::PP::Constructor::BEGIN@9
11124µs29µsYAML::PP::Constructor::::document_end_eventYAML::PP::Constructor::document_end_event
11111µs67µsYAML::PP::Constructor::::BEGIN@15YAML::PP::Constructor::BEGIN@15
11110µs32µsYAML::PP::Constructor::::BEGIN@13YAML::PP::Constructor::BEGIN@13
2119µs9µsYAML::PP::Constructor::::set_docsYAML::PP::Constructor::set_docs
1118µs44µsYAML::PP::Loader::::BEGIN@3.292 YAML::PP::Loader::BEGIN@3.292
1117µs27µsYAML::PP::Constructor::::BEGIN@12YAML::PP::Constructor::BEGIN@12
1117µs42µsYAML::PP::Constructor::::BEGIN@16YAML::PP::Constructor::BEGIN@16
3214µs4µsYAML::PP::Constructor::::set_anchorsYAML::PP::Constructor::set_anchors
2113µs3µsYAML::PP::Constructor::::default_yaml_versionYAML::PP::Constructor::default_yaml_version
2113µs3µsYAML::PP::Constructor::::set_schemaYAML::PP::Constructor::set_schema
3213µs3µsYAML::PP::Constructor::::set_stackYAML::PP::Constructor::set_stack
2113µs3µsYAML::PP::Constructor::::set_yaml_versionYAML::PP::Constructor::set_yaml_version
2113µs3µsYAML::PP::Constructor::::yaml_versionYAML::PP::Constructor::yaml_version
2222µs2µsYAML::PP::Constructor::::docsYAML::PP::Constructor::docs
2111µs1µsYAML::PP::Constructor::::schemasYAML::PP::Constructor::schemas
1111µs1µsYAML::PP::Constructor::::stream_end_eventYAML::PP::Constructor::stream_end_event
1111µs1µsYAML::PP::Constructor::::stream_start_eventYAML::PP::Constructor::stream_start_event
1110s0sYAML::PP::Constructor::::__ANON__YAML::PP::Constructor::__ANON__ (xsub)
0000s0sYAML::PP::Constructor::::alias_eventYAML::PP::Constructor::alias_event
0000s0sYAML::PP::Constructor::::anchorsYAML::PP::Constructor::anchors
0000s0sYAML::PP::Constructor::::cloneYAML::PP::Constructor::clone
0000s0sYAML::PP::Constructor::::cyclic_refsYAML::PP::Constructor::cyclic_refs
0000s0sYAML::PP::Constructor::::duplicate_keysYAML::PP::Constructor::duplicate_keys
0000s0sYAML::PP::Constructor::::set_cyclic_refsYAML::PP::Constructor::set_cyclic_refs
0000s0sYAML::PP::Constructor::::stringify_complexYAML::PP::Constructor::stringify_complex
Call graph for these subroutines as a Graphviz dot language file.
Line State
ments
Time
on line
Calls Time
in subs
Code
1# ABSTRACT: Construct data structure from Parser Events
2239µs276µs
# spent 72µs (68+4) within YAML::PP::Loader::BEGIN@2.291 which was called: # once (68µs+4µs) by YAML::PP::Loader::BEGIN@9 at line 2
use strict;
# spent 72µs making 1 call to YAML::PP::Loader::BEGIN@2.291 # spent 4µs making 1 call to strict::import
3269µs280µs
# spent 44µs (8+36) within YAML::PP::Loader::BEGIN@3.292 which was called: # once (8µs+36µs) by YAML::PP::Loader::BEGIN@9 at line 3
use warnings;
# spent 44µs making 1 call to YAML::PP::Loader::BEGIN@3.292 # spent 36µs making 1 call to warnings::import
4package YAML::PP::Constructor;
5
612µsour $VERSION = '0.035'; # VERSION
7
8286µs234µs
# spent 34µs within YAML::PP::Constructor::BEGIN@8 which was called: # once (34µs+0s) by YAML::PP::Loader::BEGIN@9 at line 8
use YAML::PP;
# spent 34µs making 1 call to YAML::PP::Constructor::BEGIN@8 # spent 0s making 1 call to YAML::PP::Constructor::__ANON__
912µs
# spent 91µs (30+61) within YAML::PP::Constructor::BEGIN@9 which was called: # once (30µs+61µs) by YAML::PP::Loader::BEGIN@9 at line 11
use YAML::PP::Common qw/
10 PRESERVE_ORDER PRESERVE_SCALAR_STYLE PRESERVE_FLOW_STYLE PRESERVE_ALIAS
11147µs2152µs/;
# spent 91µs making 1 call to YAML::PP::Constructor::BEGIN@9 # spent 61µs making 1 call to Exporter::import
12229µs247µs
# spent 27µs (7+20) within YAML::PP::Constructor::BEGIN@12 which was called: # once (7µs+20µs) by YAML::PP::Loader::BEGIN@9 at line 12
use Scalar::Util qw/ reftype /;
# spent 27µs making 1 call to YAML::PP::Constructor::BEGIN@12 # spent 20µs making 1 call to Exporter::import
13257µs254µs
# spent 32µs (10+22) within YAML::PP::Constructor::BEGIN@13 which was called: # once (10µs+22µs) by YAML::PP::Loader::BEGIN@9 at line 13
use Carp qw/ croak /;
# spent 32µs making 1 call to YAML::PP::Constructor::BEGIN@13 # spent 22µs making 1 call to Exporter::import
14
15246µs2123µs
# spent 67µs (11+56) within YAML::PP::Constructor::BEGIN@15 which was called: # once (11µs+56µs) by YAML::PP::Loader::BEGIN@9 at line 15
use constant DEBUG => ($ENV{YAML_PP_LOAD_DEBUG} or $ENV{YAML_PP_LOAD_TRACE}) ? 1 : 0;
# spent 67µs making 1 call to YAML::PP::Constructor::BEGIN@15 # spent 56µs making 1 call to constant::import
1624.25ms277µs
# spent 42µs (7+35) within YAML::PP::Constructor::BEGIN@16 which was called: # once (7µs+35µs) by YAML::PP::Loader::BEGIN@9 at line 16
use constant TRACE => $ENV{YAML_PP_LOAD_TRACE} ? 1 : 0;
# spent 42µs making 1 call to YAML::PP::Constructor::BEGIN@16 # spent 35µs making 1 call to constant::import
17
1818µsmy %cyclic_refs = qw/ allow 1 ignore 1 warn 1 fatal 1 /;
19
20
# spent 85µs (31+54) within YAML::PP::Constructor::new which was called: # once (31µs+54µs) by YAML::PP::Loader::new at line 26 of YAML/PP/Loader.pm
sub new {
2112µs my ($class, %args) = @_;
22
2311µs my $default_yaml_version = delete $args{default_yaml_version};
2410s my $duplicate_keys = delete $args{duplicate_keys};
2511µs unless (defined $duplicate_keys) {
26 $duplicate_keys = 0;
27 }
2811µs my $preserve = delete $args{preserve} || 0;
2911µs if ($preserve == 1) {
30 $preserve = PRESERVE_ORDER | PRESERVE_SCALAR_STYLE | PRESERVE_FLOW_STYLE | PRESERVE_ALIAS;
31 }
3211µs my $cyclic_refs = delete $args{cyclic_refs} || 'allow';
33 die "Invalid value for cyclic_refs: $cyclic_refs"
3411µs unless $cyclic_refs{ $cyclic_refs };
3510s my $schemas = delete $args{schemas};
36
3710s if (keys %args) {
38 die "Unexpected arguments: " . join ', ', sort keys %args;
39 }
40
4112µs my $self = bless {
42 default_yaml_version => $default_yaml_version,
43 schemas => $schemas,
44 cyclic_refs => $cyclic_refs,
45 preserve => $preserve,
46 duplicate_keys => $duplicate_keys,
47 }, $class;
4812µs154µs $self->init;
# spent 54µs making 1 call to YAML::PP::Constructor::init
49119µs return $self;
50}
51
52sub clone {
53 my ($self) = @_;
54 my $clone = {
55 schemas => $self->{schemas},
56 schema => $self->{schema},
57 default_yaml_version => $self->{default_yaml_version},
58 cyclic_refs => $self->cyclic_refs,
59 preserve => $self->{preserve},
60 };
61 return bless $clone, ref $self;
62}
63
64
# spent 78µs (51+27) within YAML::PP::Constructor::init which was called 2 times, avg 39µs/call: # once (34µs+20µs) by YAML::PP::Constructor::new at line 48 # once (17µs+7µs) by YAML::PP::Loader::load at line 93 of YAML/PP/Loader.pm
sub init {
6522µs my ($self) = @_;
6624µs29µs $self->set_docs([]);
# spent 9µs making 2 calls to YAML::PP::Constructor::set_docs, avg 4µs/call
6722µs22µs $self->set_stack([]);
# spent 2µs making 2 calls to YAML::PP::Constructor::set_stack, avg 1µs/call
6822µs23µs $self->set_anchors({});
# spent 3µs making 2 calls to YAML::PP::Constructor::set_anchors, avg 2µs/call
6927µs46µs $self->set_yaml_version($self->default_yaml_version);
# spent 3µs making 2 calls to YAML::PP::Constructor::default_yaml_version, avg 2µs/call # spent 3µs making 2 calls to YAML::PP::Constructor::set_yaml_version, avg 2µs/call
70229µs67µs $self->set_schema($self->schemas->{ $self->yaml_version } );
# spent 3µs making 2 calls to YAML::PP::Constructor::set_schema, avg 2µs/call # spent 3µs making 2 calls to YAML::PP::Constructor::yaml_version, avg 2µs/call # spent 1µs making 2 calls to YAML::PP::Constructor::schemas, avg 500ns/call
71}
72
7328µs
# spent 2µs within YAML::PP::Constructor::docs which was called 2 times, avg 1µs/call: # once (2µs+0s) by YAML::PP::Constructor::document_end_event at line 120 # once (0s+0s) by YAML::PP::Loader::load at line 96 of YAML/PP/Loader.pm
sub docs { return $_[0]->{docs} }
743611153.6ms
# spent 20.8ms within YAML::PP::Constructor::stack which was called 36111 times, avg 577ns/call: # 20941 times (12.4ms+0s) by YAML::PP::Constructor::scalar_event at line 288, avg 591ns/call # 6939 times (4.42ms+0s) by YAML::PP::Constructor::mapping_start_event at line 136, avg 637ns/call # 6939 times (3.19ms+0s) by YAML::PP::Constructor::mapping_end_event at line 164, avg 459ns/call # 645 times (493µs+0s) by YAML::PP::Constructor::sequence_start_event at line 237, avg 764ns/call # 645 times (326µs+0s) by YAML::PP::Constructor::sequence_end_event at line 262, avg 505ns/call # once (24µs+0s) by YAML::PP::Constructor::document_start_event at line 95 # once (1µs+0s) by YAML::PP::Constructor::document_end_event at line 114
sub stack { return $_[0]->{stack} }
75sub anchors { return $_[0]->{anchors} }
76217µs
# spent 9µs within YAML::PP::Constructor::set_docs which was called 2 times, avg 4µs/call: # 2 times (9µs+0s) by YAML::PP::Constructor::init at line 66, avg 4µs/call
sub set_docs { $_[0]->{docs} = $_[1] }
7737µs
# spent 3µs within YAML::PP::Constructor::set_stack which was called 3 times, avg 1µs/call: # 2 times (2µs+0s) by YAML::PP::Constructor::init at line 67, avg 1µs/call # once (1µs+0s) by YAML::PP::Constructor::document_end_event at line 123
sub set_stack { $_[0]->{stack} = $_[1] }
7837µs
# spent 4µs within YAML::PP::Constructor::set_anchors which was called 3 times, avg 1µs/call: # 2 times (3µs+0s) by YAML::PP::Constructor::init at line 68, avg 2µs/call # once (1µs+0s) by YAML::PP::Constructor::document_end_event at line 122
sub set_anchors { $_[0]->{anchors} = $_[1] }
7924µs
# spent 1µs within YAML::PP::Constructor::schemas which was called 2 times, avg 500ns/call: # 2 times (1µs+0s) by YAML::PP::Constructor::init at line 70, avg 500ns/call
sub schemas { return $_[0]->{schemas} }
802852543.0ms
# spent 17.6ms within YAML::PP::Constructor::schema which was called 28525 times, avg 617ns/call: # 20941 times (12.7ms+0s) by YAML::PP::Constructor::scalar_event at line 287, avg 604ns/call # 6939 times (4.58ms+0s) by YAML::PP::Constructor::mapping_start_event at line 128, avg 660ns/call # 645 times (383µs+0s) by YAML::PP::Constructor::sequence_start_event at line 229, avg 594ns/call
sub schema { return $_[0]->{schema} }
8124µs
# spent 3µs within YAML::PP::Constructor::set_schema which was called 2 times, avg 2µs/call: # 2 times (3µs+0s) by YAML::PP::Constructor::init at line 70, avg 2µs/call
sub set_schema { $_[0]->{schema} = $_[1] }
82sub cyclic_refs { return $_[0]->{cyclic_refs} }
83sub set_cyclic_refs { $_[0]->{cyclic_refs} = $_[1] }
8424µs
# spent 3µs within YAML::PP::Constructor::yaml_version which was called 2 times, avg 2µs/call: # 2 times (3µs+0s) by YAML::PP::Constructor::init at line 70, avg 2µs/call
sub yaml_version { return $_[0]->{yaml_version} }
8524µs
# spent 3µs within YAML::PP::Constructor::set_yaml_version which was called 2 times, avg 2µs/call: # 2 times (3µs+0s) by YAML::PP::Constructor::init at line 69, avg 2µs/call
sub set_yaml_version { $_[0]->{yaml_version} = $_[1] }
8628µs
# spent 3µs within YAML::PP::Constructor::default_yaml_version which was called 2 times, avg 2µs/call: # 2 times (3µs+0s) by YAML::PP::Constructor::init at line 69, avg 2µs/call
sub default_yaml_version { return $_[0]->{default_yaml_version} }
87693913.5ms
# spent 7.44ms within YAML::PP::Constructor::preserve_order which was called 6939 times, avg 1µs/call: # 6939 times (7.44ms+0s) by YAML::PP::Constructor::mapping_start_event at line 138, avg 1µs/call
sub preserve_order { return $_[0]->{preserve} & PRESERVE_ORDER }
882094133.9ms
# spent 16.4ms within YAML::PP::Constructor::preserve_scalar_style which was called 20941 times, avg 783ns/call: # 20941 times (16.4ms+0s) by YAML::PP::Constructor::scalar_event at line 290, avg 783ns/call
sub preserve_scalar_style { return $_[0]->{preserve} & PRESERVE_SCALAR_STYLE }
89758413.8ms
# spent 6.78ms within YAML::PP::Constructor::preserve_flow_style which was called 7584 times, avg 894ns/call: # 6939 times (6.25ms+0s) by YAML::PP::Constructor::mapping_start_event at line 139, avg 900ns/call # 645 times (534µs+0s) by YAML::PP::Constructor::sequence_start_event at line 239, avg 828ns/call
sub preserve_flow_style { return $_[0]->{preserve} & PRESERVE_FLOW_STYLE }
902852542.2ms
# spent 19.3ms within YAML::PP::Constructor::preserve_alias which was called 28525 times, avg 676ns/call: # 20941 times (15.1ms+0s) by YAML::PP::Constructor::scalar_event at line 289, avg 720ns/call # 6939 times (3.84ms+0s) by YAML::PP::Constructor::mapping_start_event at line 140, avg 554ns/call # 645 times (373µs+0s) by YAML::PP::Constructor::sequence_start_event at line 240, avg 578ns/call
sub preserve_alias { return $_[0]->{preserve} & PRESERVE_ALIAS }
91sub duplicate_keys { return $_[0]->{duplicate_keys} }
92
93
# spent 63µs (39+24) within YAML::PP::Constructor::document_start_event which was called: # once (39µs+24µs) by YAML::PP::Parser::__ANON__[/Users/ether/.perlbrew/libs/36.0@std/lib/perl5/YAML/PP/Parser.pm:62] at line 61 of YAML/PP/Parser.pm
sub document_start_event {
9411µs my ($self, $event) = @_;
95119µs124µs my $stack = $self->stack;
# spent 24µs making 1 call to YAML::PP::Constructor::stack
9611µs if ($event->{version_directive}) {
97 my $version = $event->{version_directive};
98 $version = "$version->{major}.$version->{minor}";
99 if ($self->{schemas}->{ $version }) {
100 $self->set_yaml_version($version);
101 $self->set_schema($self->schemas->{ $version });
102 }
103 else {
104 $self->set_yaml_version($self->default_yaml_version);
105 $self->set_schema($self->schemas->{ $self->default_yaml_version });
106 }
107 }
10811µs my $ref = [];
10918µs push @$stack, { type => 'document', ref => $ref, data => $ref, event => $event };
110}
111
112
# spent 29µs (24+5) within YAML::PP::Constructor::document_end_event which was called: # once (24µs+5µs) by YAML::PP::Parser::__ANON__[/Users/ether/.perlbrew/libs/36.0@std/lib/perl5/YAML/PP/Parser.pm:62] at line 61 of YAML/PP/Parser.pm
sub document_end_event {
11311µs my ($self, $event) = @_;
11411µs11µs my $stack = $self->stack;
# spent 1µs making 1 call to YAML::PP::Constructor::stack
11510s my $last = pop @$stack;
11611µs $last->{type} eq 'document' or die "Expected mapping, but got $last->{type}";
11710s if (@$stack) {
118 die "Got unexpected end of document";
119 }
12013µs12µs my $docs = $self->docs;
# spent 2µs making 1 call to YAML::PP::Constructor::docs
12111µs push @$docs, $last->{ref}->[0];
12212µs11µs $self->set_anchors({});
# spent 1µs making 1 call to YAML::PP::Constructor::set_anchors
12316µs11µs $self->set_stack([]);
# spent 1µs making 1 call to YAML::PP::Constructor::set_stack
124}
125
126
# spent 191ms (126+65.8) within YAML::PP::Constructor::mapping_start_event which was called 6939 times, avg 28µs/call: # 6939 times (126ms+65.8ms) by YAML::PP::Parser::__ANON__[/Users/ether/.perlbrew/libs/36.0@std/lib/perl5/YAML/PP/Parser.pm:62] at line 61 of YAML/PP/Parser.pm, avg 28µs/call
sub mapping_start_event {
12769393.57ms my ($self, $event) = @_;
128693917.2ms1387843.9ms my ($data, $on_data) = $self->schema->create_mapping($self, $event);
# spent 39.3ms making 6939 calls to YAML::PP::Schema::create_mapping, avg 6µs/call # spent 4.58ms making 6939 calls to YAML::PP::Constructor::schema, avg 660ns/call
129693919.7ms my $ref = {
130 type => 'mapping',
131 ref => [],
132 data => \$data,
133 event => $event,
134 on_data => $on_data,
135 };
13669396.42ms69394.42ms my $stack = $self->stack;
# spent 4.42ms making 6939 calls to YAML::PP::Constructor::stack, avg 637ns/call
137
13869398.62ms69397.44ms my $preserve_order = $self->preserve_order;
# spent 7.44ms making 6939 calls to YAML::PP::Constructor::preserve_order, avg 1µs/call
13969397.10ms69396.25ms my $preserve_style = $self->preserve_flow_style;
# spent 6.25ms making 6939 calls to YAML::PP::Constructor::preserve_flow_style, avg 900ns/call
14069396.66ms69393.84ms my $preserve_alias = $self->preserve_alias;
# spent 3.84ms making 6939 calls to YAML::PP::Constructor::preserve_alias, avg 554ns/call
14169393.07ms if (($preserve_order or $preserve_style or $preserve_alias) and not tied(%$data)) {
142 tie %$data, 'YAML::PP::Preserve::Hash', %$data;
143 }
14469391.43ms if ($preserve_style) {
145 my $t = tied %$data;
146 $t->{style} = $event->{style};
147 }
148
14969392.06ms push @$stack, $ref;
150693916.7ms if (defined(my $anchor = $event->{anchor})) {
151 if ($preserve_alias) {
152 my $t = tied %$data;
153 unless (exists $self->anchors->{ $anchor }) {
154 # Repeated anchors cannot be preserved
155 $t->{alias} = $anchor;
156 }
157 }
158 $self->anchors->{ $anchor } = { data => $ref->{data} };
159 }
160}
161
162
# spent 198ms (138+59.7) within YAML::PP::Constructor::mapping_end_event which was called 6939 times, avg 29µs/call: # 6939 times (138ms+59.7ms) by YAML::PP::Parser::__ANON__[/Users/ether/.perlbrew/libs/36.0@std/lib/perl5/YAML/PP/Parser.pm:62] at line 61 of YAML/PP/Parser.pm, avg 29µs/call
sub mapping_end_event {
16369391.45ms my ($self, $event) = @_;
16469395.30ms69393.19ms my $stack = $self->stack;
# spent 3.19ms making 6939 calls to YAML::PP::Constructor::stack, avg 459ns/call
165
16669392.15ms my $last = pop @$stack;
16769394.81ms my ($ref, $data) = @{ $last }{qw/ ref data /};
16869393.31ms $last->{type} eq 'mapping' or die "Expected mapping, but got $last->{type}";
169
1706939968µs my @merge_keys;
171 my @ref;
17269398.47ms for (my $i = 0; $i < @$ref; $i += 2) {
173134445.74ms my $key = $ref->[ $i ];
174134444.53ms if (ref $key eq 'YAML::PP::Type::MergeKey') {
175 my $merge = $ref->[ $i + 1 ];
176 if ((reftype($merge) || '') eq 'HASH') {
177 push @merge_keys, $merge;
178 }
179 elsif ((reftype($merge) || '') eq 'ARRAY') {
180 for my $item (@$merge) {
181 if ((reftype($item) || '') eq 'HASH') {
182 push @merge_keys, $item;
183 }
184 else {
185 die "Expected hash for merge key";
186 }
187 }
188 }
189 else {
190 die "Expected hash or array for merge key";
191 }
192 }
193 else {
194134447.27ms push @ref, $key, $ref->[ $i + 1 ];
195 }
196 }
19769393.27ms for my $merge (@merge_keys) {
198 for my $key (keys %$merge) {
199 unless (exists $$data->{ $key }) {
200 $$data->{ $key } = $merge->{ $key };
201 }
202 }
203 }
204
# spent 56.5ms within YAML::PP::Constructor::__ANON__[/Users/ether/.perlbrew/libs/36.0@std/lib/perl5/YAML/PP/Constructor.pm:218] which was called 6939 times, avg 8µs/call: # 6939 times (56.5ms+0s) by YAML::PP::Constructor::mapping_end_event at line 219, avg 8µs/call
my $on_data = $last->{on_data} || sub {
20569391.62ms my ($self, $hash, $items) = @_;
20669391.20ms my %seen;
207693925.5ms for (my $i = 0; $i < @$items; $i += 2) {
208134447.48ms my ($key, $value) = @$items[ $i, $i + 1 ];
209134441.88ms $key = '' unless defined $key;
210134441.32ms if (ref $key) {
211 $key = $self->stringify_complex($key);
212 }
2131344416.5ms if ($seen{ $key }++ and not $self->duplicate_keys) {
214 croak "Duplicate key '$key'";
215 }
216134449.40ms $$hash->{ $key } = $value;
217 }
218693919.7ms };
21969398.22ms693956.5ms $on_data->($self, $data, \@ref);
# spent 56.5ms making 6939 calls to YAML::PP::Constructor::__ANON__[YAML/PP/Constructor.pm:218], avg 8µs/call
22069396.91ms push @{ $stack->[-1]->{ref} }, $$data;
22169394.42ms if (defined(my $anchor = $last->{event}->{anchor})) {
222 $self->anchors->{ $anchor }->{finished} = 1;
223 }
224693944.7ms return;
225}
226
227
# spent 17.1ms (11.2+5.85) within YAML::PP::Constructor::sequence_start_event which was called 645 times, avg 26µs/call: # 645 times (11.2ms+5.85ms) by YAML::PP::Parser::__ANON__[/Users/ether/.perlbrew/libs/36.0@std/lib/perl5/YAML/PP/Parser.pm:62] at line 61 of YAML/PP/Parser.pm, avg 26µs/call
sub sequence_start_event {
228645241µs my ($self, $event) = @_;
2296451.81ms12904.45ms my ($data, $on_data) = $self->schema->create_sequence($self, $event);
# spent 4.07ms making 645 calls to YAML::PP::Schema::create_sequence, avg 6µs/call # spent 383µs making 645 calls to YAML::PP::Constructor::schema, avg 594ns/call
2306451.98ms my $ref = {
231 type => 'sequence',
232 ref => [],
233 data => \$data,
234 event => $event,
235 on_data => $on_data,
236 };
237645822µs645493µs my $stack = $self->stack;
# spent 493µs making 645 calls to YAML::PP::Constructor::stack, avg 764ns/call
238
239645757µs645534µs my $preserve_style = $self->preserve_flow_style;
# spent 534µs making 645 calls to YAML::PP::Constructor::preserve_flow_style, avg 828ns/call
240645609µs645373µs my $preserve_alias = $self->preserve_alias;
# spent 373µs making 645 calls to YAML::PP::Constructor::preserve_alias, avg 578ns/call
241645377µs if ($preserve_style or $preserve_alias and not tied(@$data)) {
242 tie @$data, 'YAML::PP::Preserve::Array', @$data;
243 my $t = tied @$data;
244 $t->{style} = $event->{style};
245 }
246
247645260µs push @$stack, $ref;
2486451.84ms if (defined(my $anchor = $event->{anchor})) {
249 if ($preserve_alias) {
250 my $t = tied @$data;
251 unless (exists $self->anchors->{ $anchor }) {
252 # Repeated anchors cannot be preserved
253 $t->{alias} = $anchor;
254 }
255 }
256 $self->anchors->{ $anchor } = { data => $ref->{data} };
257 }
258}
259
260
# spent 13.0ms (11.2+1.83) within YAML::PP::Constructor::sequence_end_event which was called 645 times, avg 20µs/call: # 645 times (11.2ms+1.83ms) by YAML::PP::Parser::__ANON__[/Users/ether/.perlbrew/libs/36.0@std/lib/perl5/YAML/PP/Parser.pm:62] at line 61 of YAML/PP/Parser.pm, avg 20µs/call
sub sequence_end_event {
261645255µs my ($self, $event) = @_;
262645591µs645326µs my $stack = $self->stack;
# spent 326µs making 645 calls to YAML::PP::Constructor::stack, avg 505ns/call
263645211µs my $last = pop @$stack;
264645475µs $last->{type} eq 'sequence' or die "Expected mapping, but got $last->{type}";
265645612µs my ($ref, $data) = @{ $last }{qw/ ref data /};
266
267
# spent 1.51ms within YAML::PP::Constructor::__ANON__[/Users/ether/.perlbrew/libs/36.0@std/lib/perl5/YAML/PP/Constructor.pm:270] which was called 645 times, avg 2µs/call: # 645 times (1.51ms+0s) by YAML::PP::Constructor::sequence_end_event at line 271, avg 2µs/call
my $on_data = $last->{on_data} || sub {
268645128µs my ($self, $array, $items) = @_;
2696452.14ms push @$$array, @$items;
2706452.31ms };
271645768µs6451.51ms $on_data->($self, $data, $ref);
# spent 1.51ms making 645 calls to YAML::PP::Constructor::__ANON__[YAML/PP/Constructor.pm:270], avg 2µs/call
272645843µs push @{ $stack->[-1]->{ref} }, $$data;
273645550µs if (defined(my $anchor = $last->{event}->{anchor})) {
274 my $test = $self->anchors->{ $anchor };
275 $self->anchors->{ $anchor }->{finished} = 1;
276 }
2776453.65ms return;
278}
279
28011µs
# spent 1µs within YAML::PP::Constructor::stream_start_event which was called: # once (1µs+0s) by YAML::PP::Parser::__ANON__[/Users/ether/.perlbrew/libs/36.0@std/lib/perl5/YAML/PP/Parser.pm:62] at line 61 of YAML/PP/Parser.pm
sub stream_start_event {}
281
28213µs
# spent 1µs within YAML::PP::Constructor::stream_end_event which was called: # once (1µs+0s) by YAML::PP::Parser::__ANON__[/Users/ether/.perlbrew/libs/36.0@std/lib/perl5/YAML/PP/Parser.pm:62] at line 61 of YAML/PP/Parser.pm
sub stream_end_event {}
283
284
# spent 958ms (234+725) within YAML::PP::Constructor::scalar_event which was called 20941 times, avg 46µs/call: # 20941 times (234ms+725ms) by YAML::PP::Parser::__ANON__[/Users/ether/.perlbrew/libs/36.0@std/lib/perl5/YAML/PP/Parser.pm:62] at line 61 of YAML/PP/Parser.pm, avg 46µs/call
sub scalar_event {
285209413.63ms my ($self, $event) = @_;
286 DEBUG and warn "CONTENT $event->{value} ($event->{style})\n";
2872094142.3ms41882681ms my $value = $self->schema->load_scalar($self, $event);
# spent 668ms making 20941 calls to YAML::PP::Schema::load_scalar, avg 32µs/call # spent 12.7ms making 20941 calls to YAML::PP::Constructor::schema, avg 604ns/call
2882094122.5ms2094112.4ms my $last = $self->stack->[-1];
# spent 12.4ms making 20941 calls to YAML::PP::Constructor::stack, avg 591ns/call
2892094117.4ms2094115.1ms my $preserve_alias = $self->preserve_alias;
# spent 15.1ms making 20941 calls to YAML::PP::Constructor::preserve_alias, avg 720ns/call
2902094119.1ms2094116.4ms my $preserve_style = $self->preserve_scalar_style;
# spent 16.4ms making 20941 calls to YAML::PP::Constructor::preserve_scalar_style, avg 783ns/call
291209414.35ms if (($preserve_style or $preserve_alias) and not ref $value) {
292 my %args = (
293 value => $value,
294 tag => $event->{tag},
295 );
296 if ($preserve_style) {
297 $args{style} = $event->{style};
298 }
299 if ($preserve_alias and defined $event->{anchor}) {
300 my $anchor = $event->{anchor};
301 unless (exists $self->anchors->{ $anchor }) {
302 # Repeated anchors cannot be preserved
303 $args{alias} = $event->{anchor};
304 }
305 }
306 $value = YAML::PP::Preserve::Scalar->new( %args );
307 }
308209416.60ms if (defined (my $name = $event->{anchor})) {
309 $self->anchors->{ $name } = { data => \$value, finished => 1 };
310 }
3112094152.7ms push @{ $last->{ref} }, $value;
312}
313
314sub alias_event {
315 my ($self, $event) = @_;
316 my $value;
317 my $name = $event->{value};
318 if (my $anchor = $self->anchors->{ $name }) {
319 # We know this is a cyclic ref since the node hasn't
320 # been constructed completely yet
321 unless ($anchor->{finished} ) {
322 my $cyclic_refs = $self->cyclic_refs;
323 if ($cyclic_refs ne 'allow') {
324 if ($cyclic_refs eq 'fatal') {
325 die "Found cyclic ref for alias '$name'";
326 }
327 if ($cyclic_refs eq 'warn') {
328 $anchor = { data => \undef };
329 warn "Found cyclic ref for alias '$name'";
330 }
331 elsif ($cyclic_refs eq 'ignore') {
332 $anchor = { data => \undef };
333 }
334 }
335 }
336 $value = $anchor->{data};
337 }
338 else {
339 croak "No anchor defined for alias '$name'";
340 }
341 my $last = $self->stack->[-1];
342 push @{ $last->{ref} }, $$value;
343}
344
345sub stringify_complex {
346 my ($self, $data) = @_;
347 return $data if (
348 ref $data eq 'YAML::PP::Preserve::Scalar'
349 and ($self->preserve_scalar_style or $self->preserve_alias)
350 );
351 require Data::Dumper;
352 local $Data::Dumper::Quotekeys = 0;
353 local $Data::Dumper::Terse = 1;
354 local $Data::Dumper::Indent = 0;
355 local $Data::Dumper::Useqq = 0;
356 local $Data::Dumper::Sortkeys = 1;
357 my $string = Data::Dumper->Dump([$data], ['data']);
358 $string =~ s/^\$data = //;
359 return $string;
360}
361
36218µs1;
363
364__END__
 
# spent 0s within YAML::PP::Constructor::__ANON__ which was called: # once (0s+0s) by YAML::PP::Constructor::BEGIN@8 at line 8
sub YAML::PP::Constructor::__ANON__; # xsub