← Index
NYTProf Performance Profile   « line view »
For ../prof.pl
  Run on Thu Dec 15 15:23:56 2022
Reported on Thu Dec 15 15:27:04 2022

Filename/Users/ether/.perlbrew/libs/36.0@std/lib/perl5/YAML/PP/Constructor.pm
StatementsExecuted 600278 statements in 543ms
Subroutines
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
2076411200ms709msYAML::PP::Constructor::::scalar_eventYAML::PP::Constructor::scalar_event
690011103ms152msYAML::PP::Constructor::::mapping_end_eventYAML::PP::Constructor::mapping_end_event
690011101ms147msYAML::PP::Constructor::::mapping_start_eventYAML::PP::Constructor::mapping_start_event
69001145.9ms45.9msYAML::PP::Constructor::::__ANON__[:218]YAML::PP::Constructor::__ANON__[:218]
358387115.4ms15.4msYAML::PP::Constructor::::stackYAML::PP::Constructor::stack
283003114.4ms14.4msYAML::PP::Constructor::::preserve_aliasYAML::PP::Constructor::preserve_alias
283003113.8ms13.8msYAML::PP::Constructor::::schemaYAML::PP::Constructor::schema
207641110.2ms10.2msYAML::PP::Constructor::::preserve_scalar_styleYAML::PP::Constructor::preserve_scalar_style
636118.30ms12.7msYAML::PP::Constructor::::sequence_start_eventYAML::PP::Constructor::sequence_start_event
636117.63ms9.04msYAML::PP::Constructor::::sequence_end_eventYAML::PP::Constructor::sequence_end_event
6900114.75ms4.75msYAML::PP::Constructor::::preserve_orderYAML::PP::Constructor::preserve_order
7536214.56ms4.56msYAML::PP::Constructor::::preserve_flow_styleYAML::PP::Constructor::preserve_flow_style
636111.18ms1.18msYAML::PP::Constructor::::__ANON__[:270]YAML::PP::Constructor::__ANON__[:270]
22238µs55µsYAML::PP::Constructor::::initYAML::PP::Constructor::init
11127µs31µsYAML::PP::Loader::::BEGIN@2.291 YAML::PP::Loader::BEGIN@2.291
11117µs19µsYAML::PP::Constructor::::document_end_eventYAML::PP::Constructor::document_end_event
11114µs52µsYAML::PP::Constructor::::newYAML::PP::Constructor::new
11111µs11µsYAML::PP::Constructor::::BEGIN@8YAML::PP::Constructor::BEGIN@8
1118µs9µsYAML::PP::Constructor::::document_start_eventYAML::PP::Constructor::document_start_event
1117µs45µsYAML::PP::Constructor::::BEGIN@15YAML::PP::Constructor::BEGIN@15
1116µs18µsYAML::PP::Constructor::::BEGIN@12YAML::PP::Constructor::BEGIN@12
1116µs32µsYAML::PP::Constructor::::BEGIN@9YAML::PP::Constructor::BEGIN@9
2116µs6µsYAML::PP::Constructor::::set_docsYAML::PP::Constructor::set_docs
1116µs34µsYAML::PP::Loader::::BEGIN@3.292 YAML::PP::Loader::BEGIN@3.292
1115µs21µsYAML::PP::Constructor::::BEGIN@16YAML::PP::Constructor::BEGIN@16
1113µs11µsYAML::PP::Constructor::::BEGIN@13YAML::PP::Constructor::BEGIN@13
2112µs2µsYAML::PP::Constructor::::schemasYAML::PP::Constructor::schemas
3212µs2µsYAML::PP::Constructor::::set_anchorsYAML::PP::Constructor::set_anchors
2112µs2µsYAML::PP::Constructor::::set_schemaYAML::PP::Constructor::set_schema
2112µs2µsYAML::PP::Constructor::::set_yaml_versionYAML::PP::Constructor::set_yaml_version
2112µs2µsYAML::PP::Constructor::::yaml_versionYAML::PP::Constructor::yaml_version
2111µs1µsYAML::PP::Constructor::::default_yaml_versionYAML::PP::Constructor::default_yaml_version
2221µs1µsYAML::PP::Constructor::::docsYAML::PP::Constructor::docs
3211µs1µsYAML::PP::Constructor::::set_stackYAML::PP::Constructor::set_stack
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
2230µs235µs
# spent 31µs (27+4) within YAML::PP::Loader::BEGIN@2.291 which was called: # once (27µs+4µs) by YAML::PP::Loader::BEGIN@9 at line 2
use strict;
# spent 31µs making 1 call to YAML::PP::Loader::BEGIN@2.291 # spent 4µs making 1 call to strict::import
3235µs262µs
# spent 34µs (6+28) within YAML::PP::Loader::BEGIN@3.292 which was called: # once (6µs+28µs) by YAML::PP::Loader::BEGIN@9 at line 3
use warnings;
# spent 34µs making 1 call to YAML::PP::Loader::BEGIN@3.292 # spent 28µs making 1 call to warnings::import
4package YAML::PP::Constructor;
5
611µsour $VERSION = '0.035'; # VERSION
7
8227µs211µs
# spent 11µs within YAML::PP::Constructor::BEGIN@8 which was called: # once (11µs+0s) by YAML::PP::Loader::BEGIN@9 at line 8
use YAML::PP;
# spent 11µs making 1 call to YAML::PP::Constructor::BEGIN@8 # spent 0s making 1 call to YAML::PP::Constructor::__ANON__
911µs
# spent 32µs (6+26) within YAML::PP::Constructor::BEGIN@9 which was called: # once (6µs+26µ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
11124µs258µs/;
# spent 32µs making 1 call to YAML::PP::Constructor::BEGIN@9 # spent 26µs making 1 call to Exporter::import
12213µs230µs
# spent 18µs (6+12) within YAML::PP::Constructor::BEGIN@12 which was called: # once (6µs+12µs) by YAML::PP::Loader::BEGIN@9 at line 12
use Scalar::Util qw/ reftype /;
# spent 18µs making 1 call to YAML::PP::Constructor::BEGIN@12 # spent 12µs making 1 call to Exporter::import
13225µs219µs
# spent 11µs (3+8) within YAML::PP::Constructor::BEGIN@13 which was called: # once (3µs+8µs) by YAML::PP::Loader::BEGIN@9 at line 13
use Carp qw/ croak /;
# spent 11µs making 1 call to YAML::PP::Constructor::BEGIN@13 # spent 8µs making 1 call to Exporter::import
14
15224µs283µs
# spent 45µs (7+38) within YAML::PP::Constructor::BEGIN@15 which was called: # once (7µs+38µ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 45µs making 1 call to YAML::PP::Constructor::BEGIN@15 # spent 38µs making 1 call to constant::import
1621.64ms237µs
# spent 21µs (5+16) within YAML::PP::Constructor::BEGIN@16 which was called: # once (5µs+16µs) by YAML::PP::Loader::BEGIN@9 at line 16
use constant TRACE => $ENV{YAML_PP_LOAD_TRACE} ? 1 : 0;
# spent 21µs making 1 call to YAML::PP::Constructor::BEGIN@16 # spent 16µs making 1 call to constant::import
17
1813µsmy %cyclic_refs = qw/ allow 1 ignore 1 warn 1 fatal 1 /;
19
20
# spent 52µs (14+38) within YAML::PP::Constructor::new which was called: # once (14µs+38µs) by YAML::PP::Loader::new at line 26 of YAML/PP/Loader.pm
sub new {
2112µs my ($class, %args) = @_;
22
2310s my $default_yaml_version = delete $args{default_yaml_version};
2411µs my $duplicate_keys = delete $args{duplicate_keys};
2511µs unless (defined $duplicate_keys) {
26 $duplicate_keys = 0;
27 }
2810s my $preserve = delete $args{preserve} || 0;
2910s 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µs138µs $self->init;
# spent 38µs making 1 call to YAML::PP::Constructor::init
4913µ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 55µs (38+17) within YAML::PP::Constructor::init which was called 2 times, avg 28µs/call: # once (26µs+12µs) by YAML::PP::Constructor::new at line 48 # once (12µs+5µs) by YAML::PP::Loader::load at line 93 of YAML/PP/Loader.pm
sub init {
6520s my ($self) = @_;
6626µs26µs $self->set_docs([]);
# spent 6µs making 2 calls to YAML::PP::Constructor::set_docs, avg 3µs/call
6721µs21µs $self->set_stack([]);
# spent 1µs making 2 calls to YAML::PP::Constructor::set_stack, avg 500ns/call
6822µs21µs $self->set_anchors({});
# spent 1µs making 2 calls to YAML::PP::Constructor::set_anchors, avg 500ns/call
6925µs43µs $self->set_yaml_version($self->default_yaml_version);
# spent 2µs making 2 calls to YAML::PP::Constructor::set_yaml_version, avg 1µs/call # spent 1µs making 2 calls to YAML::PP::Constructor::default_yaml_version, avg 500ns/call
7029µs66µs $self->set_schema($self->schemas->{ $self->yaml_version } );
# spent 2µs making 2 calls to YAML::PP::Constructor::schemas, avg 1µs/call # spent 2µs making 2 calls to YAML::PP::Constructor::set_schema, avg 1µs/call # spent 2µs making 2 calls to YAML::PP::Constructor::yaml_version, avg 1µs/call
71}
72
7325µs
# spent 1µs within YAML::PP::Constructor::docs which was called 2 times, avg 500ns/call: # once (1µ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} }
743583859.1ms
# spent 15.4ms within YAML::PP::Constructor::stack which was called 35838 times, avg 430ns/call: # 20764 times (9.27ms+0s) by YAML::PP::Constructor::scalar_event at line 288, avg 446ns/call # 6900 times (3.19ms+0s) by YAML::PP::Constructor::mapping_start_event at line 136, avg 462ns/call # 6900 times (2.43ms+0s) by YAML::PP::Constructor::mapping_end_event at line 164, avg 352ns/call # 636 times (312µs+0s) by YAML::PP::Constructor::sequence_start_event at line 237, avg 491ns/call # 636 times (228µs+0s) by YAML::PP::Constructor::sequence_end_event at line 262, avg 358ns/call # once (1µs+0s) by YAML::PP::Constructor::document_start_event at line 95 # once (0s+0s) by YAML::PP::Constructor::document_end_event at line 114
sub stack { return $_[0]->{stack} }
75sub anchors { return $_[0]->{anchors} }
7627µs
# spent 6µs within YAML::PP::Constructor::set_docs which was called 2 times, avg 3µs/call: # 2 times (6µs+0s) by YAML::PP::Constructor::init at line 66, avg 3µs/call
sub set_docs { $_[0]->{docs} = $_[1] }
7735µs
# spent 1µs within YAML::PP::Constructor::set_stack which was called 3 times, avg 333ns/call: # 2 times (1µs+0s) by YAML::PP::Constructor::init at line 67, avg 500ns/call # once (0s+0s) by YAML::PP::Constructor::document_end_event at line 123
sub set_stack { $_[0]->{stack} = $_[1] }
7837µs
# spent 2µs within YAML::PP::Constructor::set_anchors which was called 3 times, avg 667ns/call: # 2 times (1µs+0s) by YAML::PP::Constructor::init at line 68, avg 500ns/call # once (1µs+0s) by YAML::PP::Constructor::document_end_event at line 122
sub set_anchors { $_[0]->{anchors} = $_[1] }
7924µs
# spent 2µs within YAML::PP::Constructor::schemas which was called 2 times, avg 1µs/call: # 2 times (2µs+0s) by YAML::PP::Constructor::init at line 70, avg 1µs/call
sub schemas { return $_[0]->{schemas} }
802830033.1ms
# spent 13.8ms within YAML::PP::Constructor::schema which was called 28300 times, avg 488ns/call: # 20764 times (10.2ms+0s) by YAML::PP::Constructor::scalar_event at line 287, avg 493ns/call # 6900 times (3.29ms+0s) by YAML::PP::Constructor::mapping_start_event at line 128, avg 477ns/call # 636 times (289µs+0s) by YAML::PP::Constructor::sequence_start_event at line 229, avg 454ns/call
sub schema { return $_[0]->{schema} }
8123µs
# spent 2µs within YAML::PP::Constructor::set_schema which was called 2 times, avg 1µs/call: # 2 times (2µs+0s) by YAML::PP::Constructor::init at line 70, avg 1µs/call
sub set_schema { $_[0]->{schema} = $_[1] }
82sub cyclic_refs { return $_[0]->{cyclic_refs} }
83sub set_cyclic_refs { $_[0]->{cyclic_refs} = $_[1] }
8423µs
# spent 2µs within YAML::PP::Constructor::yaml_version which was called 2 times, avg 1µs/call: # 2 times (2µs+0s) by YAML::PP::Constructor::init at line 70, avg 1µs/call
sub yaml_version { return $_[0]->{yaml_version} }
8525µs
# spent 2µs within YAML::PP::Constructor::set_yaml_version which was called 2 times, avg 1µs/call: # 2 times (2µs+0s) by YAML::PP::Constructor::init at line 69, avg 1µs/call
sub set_yaml_version { $_[0]->{yaml_version} = $_[1] }
8623µs
# spent 1µs within YAML::PP::Constructor::default_yaml_version which was called 2 times, avg 500ns/call: # 2 times (1µs+0s) by YAML::PP::Constructor::init at line 69, avg 500ns/call
sub default_yaml_version { return $_[0]->{default_yaml_version} }
8769008.63ms
# spent 4.75ms within YAML::PP::Constructor::preserve_order which was called 6900 times, avg 688ns/call: # 6900 times (4.75ms+0s) by YAML::PP::Constructor::mapping_start_event at line 138, avg 688ns/call
sub preserve_order { return $_[0]->{preserve} & PRESERVE_ORDER }
882076422.6ms
# spent 10.2ms within YAML::PP::Constructor::preserve_scalar_style which was called 20764 times, avg 490ns/call: # 20764 times (10.2ms+0s) by YAML::PP::Constructor::scalar_event at line 290, avg 490ns/call
sub preserve_scalar_style { return $_[0]->{preserve} & PRESERVE_SCALAR_STYLE }
8975369.48ms
# spent 4.56ms within YAML::PP::Constructor::preserve_flow_style which was called 7536 times, avg 605ns/call: # 6900 times (4.20ms+0s) by YAML::PP::Constructor::mapping_start_event at line 139, avg 608ns/call # 636 times (362µs+0s) by YAML::PP::Constructor::sequence_start_event at line 239, avg 569ns/call
sub preserve_flow_style { return $_[0]->{preserve} & PRESERVE_FLOW_STYLE }
902830032.3ms
# spent 14.4ms within YAML::PP::Constructor::preserve_alias which was called 28300 times, avg 509ns/call: # 20764 times (11.1ms+0s) by YAML::PP::Constructor::scalar_event at line 289, avg 536ns/call # 6900 times (2.99ms+0s) by YAML::PP::Constructor::mapping_start_event at line 140, avg 433ns/call # 636 times (283µs+0s) by YAML::PP::Constructor::sequence_start_event at line 240, avg 445ns/call
sub preserve_alias { return $_[0]->{preserve} & PRESERVE_ALIAS }
91sub duplicate_keys { return $_[0]->{duplicate_keys} }
92
93
# spent 9µs (8+1) within YAML::PP::Constructor::document_start_event which was called: # once (8µs+1µ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 {
9410s my ($self, $event) = @_;
9512µs11µs my $stack = $self->stack;
# spent 1µs making 1 call to YAML::PP::Constructor::stack
9610s 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 = [];
10914µs push @$stack, { type => 'document', ref => $ref, data => $ref, event => $event };
110}
111
112
# spent 19µs (17+2) within YAML::PP::Constructor::document_end_event which was called: # once (17µs+2µ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 {
11310s my ($self, $event) = @_;
11412µs10s my $stack = $self->stack;
# spent 0s 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}";
11711µs if (@$stack) {
118 die "Got unexpected end of document";
119 }
12012µs11µs my $docs = $self->docs;
# spent 1µs making 1 call to YAML::PP::Constructor::docs
12110s push @$docs, $last->{ref}->[0];
12212µs11µs $self->set_anchors({});
# spent 1µs making 1 call to YAML::PP::Constructor::set_anchors
12315µs10s $self->set_stack([]);
# spent 0s making 1 call to YAML::PP::Constructor::set_stack
124}
125
126
# spent 147ms (101+46.7) within YAML::PP::Constructor::mapping_start_event which was called 6900 times, avg 21µs/call: # 6900 times (101ms+46.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 21µs/call
sub mapping_start_event {
12769001.28ms my ($self, $event) = @_;
128690011.7ms1380031.6ms my ($data, $on_data) = $self->schema->create_mapping($self, $event);
# spent 28.3ms making 6900 calls to YAML::PP::Schema::create_mapping, avg 4µs/call # spent 3.29ms making 6900 calls to YAML::PP::Constructor::schema, avg 477ns/call
129690011.2ms my $ref = {
130 type => 'mapping',
131 ref => [],
132 data => \$data,
133 event => $event,
134 on_data => $on_data,
135 };
13669004.46ms69003.19ms my $stack = $self->stack;
# spent 3.19ms making 6900 calls to YAML::PP::Constructor::stack, avg 462ns/call
137
13869005.38ms69004.75ms my $preserve_order = $self->preserve_order;
# spent 4.75ms making 6900 calls to YAML::PP::Constructor::preserve_order, avg 688ns/call
13969005.10ms69004.20ms my $preserve_style = $self->preserve_flow_style;
# spent 4.20ms making 6900 calls to YAML::PP::Constructor::preserve_flow_style, avg 608ns/call
14069004.28ms69002.99ms my $preserve_alias = $self->preserve_alias;
# spent 2.99ms making 6900 calls to YAML::PP::Constructor::preserve_alias, avg 433ns/call
14169001.42ms if (($preserve_order or $preserve_style or $preserve_alias) and not tied(%$data)) {
142 tie %$data, 'YAML::PP::Preserve::Hash', %$data;
143 }
1446900960µs if ($preserve_style) {
145 my $t = tied %$data;
146 $t->{style} = $event->{style};
147 }
148
14969001.67ms push @$stack, $ref;
150690012.2ms 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 152ms (103+48.4) within YAML::PP::Constructor::mapping_end_event which was called 6900 times, avg 22µs/call: # 6900 times (103ms+48.4ms) 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 22µs/call
sub mapping_end_event {
16369001.19ms my ($self, $event) = @_;
16469003.92ms69002.43ms my $stack = $self->stack;
# spent 2.43ms making 6900 calls to YAML::PP::Constructor::stack, avg 352ns/call
165
16669001.76ms my $last = pop @$stack;
16769003.45ms my ($ref, $data) = @{ $last }{qw/ ref data /};
16869001.88ms $last->{type} eq 'mapping' or die "Expected mapping, but got $last->{type}";
169
1706900896µs my @merge_keys;
171 my @ref;
17269006.96ms for (my $i = 0; $i < @$ref; $i += 2) {
173133494.20ms my $key = $ref->[ $i ];
174133494.11ms 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 {
194133495.70ms push @ref, $key, $ref->[ $i + 1 ];
195 }
196 }
19769002.59ms 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 45.9ms within YAML::PP::Constructor::__ANON__[/Users/ether/.perlbrew/libs/36.0@std/lib/perl5/YAML/PP/Constructor.pm:218] which was called 6900 times, avg 7µs/call: # 6900 times (45.9ms+0s) by YAML::PP::Constructor::mapping_end_event at line 219, avg 7µs/call
my $on_data = $last->{on_data} || sub {
20569001.42ms my ($self, $hash, $items) = @_;
2066900932µs my %seen;
207690019.0ms for (my $i = 0; $i < @$items; $i += 2) {
208133496.36ms my ($key, $value) = @$items[ $i, $i + 1 ];
209133491.35ms $key = '' unless defined $key;
210133491.07ms if (ref $key) {
211 $key = $self->stringify_complex($key);
212 }
2131334913.5ms if ($seen{ $key }++ and not $self->duplicate_keys) {
214 croak "Duplicate key '$key'";
215 }
216133497.64ms $$hash->{ $key } = $value;
217 }
218690014.4ms };
21969006.01ms690045.9ms $on_data->($self, $data, \@ref);
# spent 45.9ms making 6900 calls to YAML::PP::Constructor::__ANON__[YAML/PP/Constructor.pm:218], avg 7µs/call
22069005.29ms push @{ $stack->[-1]->{ref} }, $$data;
22169002.55ms if (defined(my $anchor = $last->{event}->{anchor})) {
222 $self->anchors->{ $anchor }->{finished} = 1;
223 }
224690033.3ms return;
225}
226
227
# spent 12.7ms (8.30+4.39) within YAML::PP::Constructor::sequence_start_event which was called 636 times, avg 20µs/call: # 636 times (8.30ms+4.39ms) 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_start_event {
228636222µs my ($self, $event) = @_;
2296361.29ms12723.44ms my ($data, $on_data) = $self->schema->create_sequence($self, $event);
# spent 3.15ms making 636 calls to YAML::PP::Schema::create_sequence, avg 5µs/call # spent 289µs making 636 calls to YAML::PP::Constructor::schema, avg 454ns/call
2306361.31ms my $ref = {
231 type => 'sequence',
232 ref => [],
233 data => \$data,
234 event => $event,
235 on_data => $on_data,
236 };
237636583µs636312µs my $stack = $self->stack;
# spent 312µs making 636 calls to YAML::PP::Constructor::stack, avg 491ns/call
238
239636469µs636362µs my $preserve_style = $self->preserve_flow_style;
# spent 362µs making 636 calls to YAML::PP::Constructor::preserve_flow_style, avg 569ns/call
240636479µs636283µs my $preserve_alias = $self->preserve_alias;
# spent 283µs making 636 calls to YAML::PP::Constructor::preserve_alias, avg 445ns/call
241636175µ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
247636247µs push @$stack, $ref;
2486361.64ms 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 9.04ms (7.63+1.41) within YAML::PP::Constructor::sequence_end_event which was called 636 times, avg 14µs/call: # 636 times (7.63ms+1.41ms) 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 14µs/call
sub sequence_end_event {
261636191µs my ($self, $event) = @_;
262636440µs636228µs my $stack = $self->stack;
# spent 228µs making 636 calls to YAML::PP::Constructor::stack, avg 358ns/call
263636286µs my $last = pop @$stack;
264636418µs $last->{type} eq 'sequence' or die "Expected mapping, but got $last->{type}";
265636369µs my ($ref, $data) = @{ $last }{qw/ ref data /};
266
267
# spent 1.18ms within YAML::PP::Constructor::__ANON__[/Users/ether/.perlbrew/libs/36.0@std/lib/perl5/YAML/PP/Constructor.pm:270] which was called 636 times, avg 2µs/call: # 636 times (1.18ms+0s) by YAML::PP::Constructor::sequence_end_event at line 271, avg 2µs/call
my $on_data = $last->{on_data} || sub {
268636176µs my ($self, $array, $items) = @_;
2696361.58ms push @$$array, @$items;
2706361.54ms };
271636599µs6361.18ms $on_data->($self, $data, $ref);
# spent 1.18ms making 636 calls to YAML::PP::Constructor::__ANON__[YAML/PP/Constructor.pm:270], avg 2µs/call
272636367µs push @{ $stack->[-1]->{ref} }, $$data;
273636312µs if (defined(my $anchor = $last->{event}->{anchor})) {
274 my $test = $self->anchors->{ $anchor };
275 $self->anchors->{ $anchor }->{finished} = 1;
276 }
2776362.63ms return;
278}
279
28012µ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
28212µ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 709ms (200+509) within YAML::PP::Constructor::scalar_event which was called 20764 times, avg 34µs/call: # 20764 times (200ms+509ms) 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 34µs/call
sub scalar_event {
285207643.17ms my ($self, $event) = @_;
286 DEBUG and warn "CONTENT $event->{value} ($event->{style})\n";
2872076429.6ms41528478ms my $value = $self->schema->load_scalar($self, $event);
# spent 468ms making 20764 calls to YAML::PP::Schema::load_scalar, avg 23µs/call # spent 10.2ms making 20764 calls to YAML::PP::Constructor::schema, avg 493ns/call
2882076440.6ms207649.27ms my $last = $self->stack->[-1];
# spent 9.27ms making 20764 calls to YAML::PP::Constructor::stack, avg 446ns/call
2892076413.1ms2076411.1ms my $preserve_alias = $self->preserve_alias;
# spent 11.1ms making 20764 calls to YAML::PP::Constructor::preserve_alias, avg 536ns/call
2902076413.4ms2076410.2ms my $preserve_style = $self->preserve_scalar_style;
# spent 10.2ms making 20764 calls to YAML::PP::Constructor::preserve_scalar_style, avg 490ns/call
291207644.01ms 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 }
308207646.43ms if (defined (my $name = $event->{anchor})) {
309 $self->anchors->{ $name } = { data => \$value, finished => 1 };
310 }
3112076441.1ms 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
36214µ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