← Index
NYTProf Performance Profile   « line view »
For ../prof.pl
  Run on Wed Dec 14 15:33:55 2022
Reported on Wed Dec 14 15:40:04 2022

Filename/Users/ether/.perlbrew/libs/36.0@std/lib/perl5/YAML/PP/Constructor.pm
StatementsExecuted 604683 statements in 649ms
Subroutines
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
2094111229ms887msYAML::PP::Constructor::::scalar_eventYAML::PP::Constructor::scalar_event
693911135ms193msYAML::PP::Constructor::::mapping_end_eventYAML::PP::Constructor::mapping_end_event
693911113ms172msYAML::PP::Constructor::::mapping_start_eventYAML::PP::Constructor::mapping_start_event
69391155.6ms55.6msYAML::PP::Constructor::::__ANON__[:218]YAML::PP::Constructor::__ANON__[:218]
361117118.2ms18.2msYAML::PP::Constructor::::stackYAML::PP::Constructor::stack
285253117.5ms17.5msYAML::PP::Constructor::::preserve_aliasYAML::PP::Constructor::preserve_alias
285253116.0ms16.0msYAML::PP::Constructor::::schemaYAML::PP::Constructor::schema
209411113.3ms13.3msYAML::PP::Constructor::::preserve_scalar_styleYAML::PP::Constructor::preserve_scalar_style
6451113.0ms18.8msYAML::PP::Constructor::::sequence_start_eventYAML::PP::Constructor::sequence_start_event
645119.95ms11.6msYAML::PP::Constructor::::sequence_end_eventYAML::PP::Constructor::sequence_end_event
6939116.29ms6.29msYAML::PP::Constructor::::preserve_orderYAML::PP::Constructor::preserve_order
7584216.15ms6.15msYAML::PP::Constructor::::preserve_flow_styleYAML::PP::Constructor::preserve_flow_style
645111.36ms1.36msYAML::PP::Constructor::::__ANON__[:270]YAML::PP::Constructor::__ANON__[:270]
11145µs49µsYAML::PP::Loader::::BEGIN@2.290 YAML::PP::Loader::BEGIN@2.290
22239µs66µsYAML::PP::Constructor::::initYAML::PP::Constructor::init
11129µs30µsYAML::PP::Constructor::::BEGIN@8YAML::PP::Constructor::BEGIN@8
11121µs66µsYAML::PP::Constructor::::newYAML::PP::Constructor::new
11116µs18µsYAML::PP::Constructor::::document_end_eventYAML::PP::Constructor::document_end_event
11113µs62µsYAML::PP::Constructor::::BEGIN@9YAML::PP::Constructor::BEGIN@9
11110µs169µsYAML::PP::Constructor::::BEGIN@15YAML::PP::Constructor::BEGIN@15
11110µs11µsYAML::PP::Constructor::::document_start_eventYAML::PP::Constructor::document_start_event
1119µs40µsYAML::PP::Constructor::::BEGIN@16YAML::PP::Constructor::BEGIN@16
2119µs9µsYAML::PP::Constructor::::set_yaml_versionYAML::PP::Constructor::set_yaml_version
1118µs30µsYAML::PP::Constructor::::BEGIN@12YAML::PP::Constructor::BEGIN@12
2118µs8µsYAML::PP::Constructor::::default_yaml_versionYAML::PP::Constructor::default_yaml_version
1118µs52µsYAML::PP::Loader::::BEGIN@3.291 YAML::PP::Loader::BEGIN@3.291
1116µs26µsYAML::PP::Constructor::::BEGIN@13YAML::PP::Constructor::BEGIN@13
2114µs4µsYAML::PP::Constructor::::set_docsYAML::PP::Constructor::set_docs
3213µs3µsYAML::PP::Constructor::::set_anchorsYAML::PP::Constructor::set_anchors
3213µs3µsYAML::PP::Constructor::::set_stackYAML::PP::Constructor::set_stack
2112µs2µsYAML::PP::Constructor::::schemasYAML::PP::Constructor::schemas
1111µs1µsYAML::PP::Constructor::::__ANON__YAML::PP::Constructor::__ANON__ (xsub)
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
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
2220s0sYAML::PP::Constructor::::docsYAML::PP::Constructor::docs
0000s0sYAML::PP::Constructor::::duplicate_keysYAML::PP::Constructor::duplicate_keys
0000s0sYAML::PP::Constructor::::set_cyclic_refsYAML::PP::Constructor::set_cyclic_refs
2110s0sYAML::PP::Constructor::::set_schemaYAML::PP::Constructor::set_schema
0000s0sYAML::PP::Constructor::::stringify_complexYAML::PP::Constructor::stringify_complex
2110s0sYAML::PP::Constructor::::yaml_versionYAML::PP::Constructor::yaml_version
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
2252µs253µs
# spent 49µs (45+4) within YAML::PP::Loader::BEGIN@2.290 which was called: # once (45µs+4µs) by YAML::PP::Loader::BEGIN@9 at line 2
use strict;
# spent 49µs making 1 call to YAML::PP::Loader::BEGIN@2.290 # spent 4µs making 1 call to strict::import
3252µs296µs
# spent 52µs (8+44) within YAML::PP::Loader::BEGIN@3.291 which was called: # once (8µs+44µs) by YAML::PP::Loader::BEGIN@9 at line 3
use warnings;
# spent 52µs making 1 call to YAML::PP::Loader::BEGIN@3.291 # spent 44µs making 1 call to warnings::import
4package YAML::PP::Constructor;
5
611µsour $VERSION = '0.035'; # VERSION
7
8254µs231µs
# spent 30µs (29+1) within YAML::PP::Constructor::BEGIN@8 which was called: # once (29µs+1µs) by YAML::PP::Loader::BEGIN@9 at line 8
use YAML::PP;
# spent 30µs making 1 call to YAML::PP::Constructor::BEGIN@8 # spent 1µs making 1 call to YAML::PP::Constructor::__ANON__
911µs
# spent 62µs (13+49) within YAML::PP::Constructor::BEGIN@9 which was called: # once (13µs+49µ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
11136µs2111µs/;
# spent 62µs making 1 call to YAML::PP::Constructor::BEGIN@9 # spent 49µs making 1 call to Exporter::import
12229µs252µs
# spent 30µs (8+22) within YAML::PP::Constructor::BEGIN@12 which was called: # once (8µs+22µs) by YAML::PP::Loader::BEGIN@9 at line 12
use Scalar::Util qw/ reftype /;
# spent 30µs making 1 call to YAML::PP::Constructor::BEGIN@12 # spent 22µs making 1 call to Exporter::import
13248µs246µs
# spent 26µs (6+20) within YAML::PP::Constructor::BEGIN@13 which was called: # once (6µs+20µs) by YAML::PP::Loader::BEGIN@9 at line 13
use Carp qw/ croak /;
# spent 26µs making 1 call to YAML::PP::Constructor::BEGIN@13 # spent 20µs making 1 call to Exporter::import
14
15287µs2328µs
# spent 169µs (10+159) within YAML::PP::Constructor::BEGIN@15 which was called: # once (10µs+159µ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 169µs making 1 call to YAML::PP::Constructor::BEGIN@15 # spent 159µs making 1 call to constant::import
1622.25ms271µs
# spent 40µs (9+31) within YAML::PP::Constructor::BEGIN@16 which was called: # once (9µs+31µs) by YAML::PP::Loader::BEGIN@9 at line 16
use constant TRACE => $ENV{YAML_PP_LOAD_TRACE} ? 1 : 0;
# spent 40µs making 1 call to YAML::PP::Constructor::BEGIN@16 # spent 31µs making 1 call to constant::import
17
1814µsmy %cyclic_refs = qw/ allow 1 ignore 1 warn 1 fatal 1 /;
19
20
# spent 66µs (21+45) within YAML::PP::Constructor::new which was called: # once (21µs+45µ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};
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
3711µs 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µs145µs $self->init;
# spent 45µs making 1 call to YAML::PP::Constructor::init
4914µ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 66µs (39+27) within YAML::PP::Constructor::init which was called 2 times, avg 33µs/call: # once (28µs+17µs) by YAML::PP::Constructor::new at line 48 # once (11µs+10µs) by YAML::PP::Loader::load at line 93 of YAML/PP/Loader.pm
sub init {
6520s my ($self) = @_;
6621µs24µs $self->set_docs([]);
# spent 4µs making 2 calls to YAML::PP::Constructor::set_docs, avg 2µs/call
6722µs22µs $self->set_stack([]);
# spent 2µs making 2 calls to YAML::PP::Constructor::set_stack, avg 1µs/call
6824µs22µs $self->set_anchors({});
# spent 2µs making 2 calls to YAML::PP::Constructor::set_anchors, avg 1µs/call
69211µs417µs $self->set_yaml_version($self->default_yaml_version);
# spent 9µs making 2 calls to YAML::PP::Constructor::set_yaml_version, avg 4µs/call # spent 8µs making 2 calls to YAML::PP::Constructor::default_yaml_version, avg 4µs/call
70223µs62µ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 0s making 2 calls to YAML::PP::Constructor::set_schema, avg 0s/call # spent 0s making 2 calls to YAML::PP::Constructor::yaml_version, avg 0s/call
71}
72
7323µs
# spent 0s within YAML::PP::Constructor::docs which was called 2 times, avg 0s/call: # once (0s+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} }
743611152.8ms
# spent 18.2ms within YAML::PP::Constructor::stack which was called 36111 times, avg 505ns/call: # 20941 times (10.9ms+0s) by YAML::PP::Constructor::scalar_event at line 288, avg 523ns/call # 6939 times (3.64ms+0s) by YAML::PP::Constructor::mapping_start_event at line 136, avg 524ns/call # 6939 times (2.96ms+0s) by YAML::PP::Constructor::mapping_end_event at line 164, avg 427ns/call # 645 times (380µs+0s) by YAML::PP::Constructor::sequence_start_event at line 237, avg 589ns/call # 645 times (305µs+0s) by YAML::PP::Constructor::sequence_end_event at line 262, avg 473ns/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} }
7628µs
# spent 4µs within YAML::PP::Constructor::set_docs which was called 2 times, avg 2µs/call: # 2 times (4µs+0s) by YAML::PP::Constructor::init at line 66, avg 2µ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] }
7835µs
# spent 3µs within YAML::PP::Constructor::set_anchors which was called 3 times, avg 1µs/call: # 2 times (2µs+0s) by YAML::PP::Constructor::init at line 68, avg 1µ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 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} }
802852544.6ms
# spent 16.0ms within YAML::PP::Constructor::schema which was called 28525 times, avg 561ns/call: # 20941 times (11.7ms+0s) by YAML::PP::Constructor::scalar_event at line 287, avg 558ns/call # 6939 times (3.95ms+0s) by YAML::PP::Constructor::mapping_start_event at line 128, avg 569ns/call # 645 times (372µs+0s) by YAML::PP::Constructor::sequence_start_event at line 229, avg 577ns/call
sub schema { return $_[0]->{schema} }
8123µs
# spent 0s within YAML::PP::Constructor::set_schema which was called 2 times, avg 0s/call: # 2 times (0s+0s) by YAML::PP::Constructor::init at line 70, avg 0s/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 0s within YAML::PP::Constructor::yaml_version which was called 2 times, avg 0s/call: # 2 times (0s+0s) by YAML::PP::Constructor::init at line 70, avg 0s/call
sub yaml_version { return $_[0]->{yaml_version} }
85211µs
# spent 9µs within YAML::PP::Constructor::set_yaml_version which was called 2 times, avg 4µs/call: # 2 times (9µs+0s) by YAML::PP::Constructor::init at line 69, avg 4µs/call
sub set_yaml_version { $_[0]->{yaml_version} = $_[1] }
8624µs
# spent 8µs within YAML::PP::Constructor::default_yaml_version which was called 2 times, avg 4µs/call: # 2 times (8µs+0s) by YAML::PP::Constructor::init at line 69, avg 4µs/call
sub default_yaml_version { return $_[0]->{default_yaml_version} }
87693914.5ms
# spent 6.29ms within YAML::PP::Constructor::preserve_order which was called 6939 times, avg 906ns/call: # 6939 times (6.29ms+0s) by YAML::PP::Constructor::mapping_start_event at line 138, avg 906ns/call
sub preserve_order { return $_[0]->{preserve} & PRESERVE_ORDER }
882094132.3ms
# spent 13.3ms within YAML::PP::Constructor::preserve_scalar_style which was called 20941 times, avg 635ns/call: # 20941 times (13.3ms+0s) by YAML::PP::Constructor::scalar_event at line 290, avg 635ns/call
sub preserve_scalar_style { return $_[0]->{preserve} & PRESERVE_SCALAR_STYLE }
89758413.9ms
# spent 6.15ms within YAML::PP::Constructor::preserve_flow_style which was called 7584 times, avg 811ns/call: # 6939 times (5.59ms+0s) by YAML::PP::Constructor::mapping_start_event at line 139, avg 806ns/call # 645 times (563µs+0s) by YAML::PP::Constructor::sequence_start_event at line 239, avg 873ns/call
sub preserve_flow_style { return $_[0]->{preserve} & PRESERVE_FLOW_STYLE }
902852545.2ms
# spent 17.5ms within YAML::PP::Constructor::preserve_alias which was called 28525 times, avg 614ns/call: # 20941 times (13.6ms+0s) by YAML::PP::Constructor::scalar_event at line 289, avg 651ns/call # 6939 times (3.58ms+0s) by YAML::PP::Constructor::mapping_start_event at line 140, avg 515ns/call # 645 times (297µs+0s) by YAML::PP::Constructor::sequence_start_event at line 240, avg 460ns/call
sub preserve_alias { return $_[0]->{preserve} & PRESERVE_ALIAS }
91sub duplicate_keys { return $_[0]->{duplicate_keys} }
92
93
# spent 11µs (10+1000ns) within YAML::PP::Constructor::document_start_event which was called: # once (10µs+1000ns) 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) = @_;
9513µ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 }
10810s my $ref = [];
10916µs push @$stack, { type => 'document', ref => $ref, data => $ref, event => $event };
110}
111
112
# spent 18µs (16+2) within YAML::PP::Constructor::document_end_event which was called: # once (16µ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) = @_;
11410s10s 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}";
11710s if (@$stack) {
118 die "Got unexpected end of document";
119 }
12011µs10s my $docs = $self->docs;
# spent 0s 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 172ms (113+58.8) within YAML::PP::Constructor::mapping_start_event which was called 6939 times, avg 25µs/call: # 6939 times (113ms+58.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 25µs/call
sub mapping_start_event {
12769391.90ms my ($self, $event) = @_;
128693916.5ms1387839.7ms my ($data, $on_data) = $self->schema->create_mapping($self, $event);
# spent 35.8ms making 6939 calls to YAML::PP::Schema::create_mapping, avg 5µs/call # spent 3.95ms making 6939 calls to YAML::PP::Constructor::schema, avg 569ns/call
129693915.8ms my $ref = {
130 type => 'mapping',
131 ref => [],
132 data => \$data,
133 event => $event,
134 on_data => $on_data,
135 };
13669395.97ms69393.64ms my $stack = $self->stack;
# spent 3.64ms making 6939 calls to YAML::PP::Constructor::stack, avg 524ns/call
137
13869396.45ms69396.29ms my $preserve_order = $self->preserve_order;
# spent 6.29ms making 6939 calls to YAML::PP::Constructor::preserve_order, avg 906ns/call
13969396.20ms69395.59ms my $preserve_style = $self->preserve_flow_style;
# spent 5.59ms making 6939 calls to YAML::PP::Constructor::preserve_flow_style, avg 806ns/call
14069395.28ms69393.58ms my $preserve_alias = $self->preserve_alias;
# spent 3.58ms making 6939 calls to YAML::PP::Constructor::preserve_alias, avg 515ns/call
14169392.22ms if (($preserve_order or $preserve_style or $preserve_alias) and not tied(%$data)) {
142 tie %$data, 'YAML::PP::Preserve::Hash', %$data;
143 }
14469391.17ms if ($preserve_style) {
145 my $t = tied %$data;
146 $t->{style} = $event->{style};
147 }
148
14969391.87ms push @$stack, $ref;
150693915.9ms 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 193ms (135+58.5) within YAML::PP::Constructor::mapping_end_event which was called 6939 times, avg 28µs/call: # 6939 times (135ms+58.5ms) 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_end_event {
16369391.68ms my ($self, $event) = @_;
16469394.75ms69392.96ms my $stack = $self->stack;
# spent 2.96ms making 6939 calls to YAML::PP::Constructor::stack, avg 427ns/call
165
16669391.66ms my $last = pop @$stack;
16769394.52ms my ($ref, $data) = @{ $last }{qw/ ref data /};
16869392.68ms $last->{type} eq 'mapping' or die "Expected mapping, but got $last->{type}";
169
17069391.22ms my @merge_keys;
171 my @ref;
17269399.16ms for (my $i = 0; $i < @$ref; $i += 2) {
173134445.25ms my $key = $ref->[ $i ];
174134445.18ms 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.01ms push @ref, $key, $ref->[ $i + 1 ];
195 }
196 }
19769393.43ms 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 55.6ms 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 (55.6ms+0s) by YAML::PP::Constructor::mapping_end_event at line 219, avg 8µs/call
my $on_data = $last->{on_data} || sub {
20569391.58ms my ($self, $hash, $items) = @_;
20669391.21ms my %seen;
207693925.8ms for (my $i = 0; $i < @$items; $i += 2) {
208134447.58ms my ($key, $value) = @$items[ $i, $i + 1 ];
209134441.87ms $key = '' unless defined $key;
210134441.30ms if (ref $key) {
211 $key = $self->stringify_complex($key);
212 }
2131344415.5ms if ($seen{ $key }++ and not $self->duplicate_keys) {
214 croak "Duplicate key '$key'";
215 }
216134449.81ms $$hash->{ $key } = $value;
217 }
218693918.0ms };
21969397.82ms693955.6ms $on_data->($self, $data, \@ref);
# spent 55.6ms making 6939 calls to YAML::PP::Constructor::__ANON__[YAML/PP/Constructor.pm:218], avg 8µs/call
22069395.85ms push @{ $stack->[-1]->{ref} }, $$data;
22169392.98ms if (defined(my $anchor = $last->{event}->{anchor})) {
222 $self->anchors->{ $anchor }->{finished} = 1;
223 }
224693944.7ms return;
225}
226
227
# spent 18.8ms (13.0+5.79) within YAML::PP::Constructor::sequence_start_event which was called 645 times, avg 29µs/call: # 645 times (13.0ms+5.79ms) 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 sequence_start_event {
228645255µs my ($self, $event) = @_;
2296451.86ms12904.55ms my ($data, $on_data) = $self->schema->create_sequence($self, $event);
# spent 4.18ms making 645 calls to YAML::PP::Schema::create_sequence, avg 6µs/call # spent 372µs making 645 calls to YAML::PP::Constructor::schema, avg 577ns/call
2306451.93ms my $ref = {
231 type => 'sequence',
232 ref => [],
233 data => \$data,
234 event => $event,
235 on_data => $on_data,
236 };
237645714µs645380µs my $stack = $self->stack;
# spent 380µs making 645 calls to YAML::PP::Constructor::stack, avg 589ns/call
238
239645650µs645563µs my $preserve_style = $self->preserve_flow_style;
# spent 563µs making 645 calls to YAML::PP::Constructor::preserve_flow_style, avg 873ns/call
240645609µs645297µs my $preserve_alias = $self->preserve_alias;
# spent 297µs making 645 calls to YAML::PP::Constructor::preserve_alias, avg 460ns/call
241645383µ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
247645283µs push @$stack, $ref;
2486451.92ms 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 11.6ms (9.95+1.66) within YAML::PP::Constructor::sequence_end_event which was called 645 times, avg 18µs/call: # 645 times (9.95ms+1.66ms) 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 18µs/call
sub sequence_end_event {
261645231µs my ($self, $event) = @_;
262645669µs645305µs my $stack = $self->stack;
# spent 305µs making 645 calls to YAML::PP::Constructor::stack, avg 473ns/call
263645240µs my $last = pop @$stack;
264645406µs $last->{type} eq 'sequence' or die "Expected mapping, but got $last->{type}";
265645430µs my ($ref, $data) = @{ $last }{qw/ ref data /};
266
267
# spent 1.36ms 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.36ms+0s) by YAML::PP::Constructor::sequence_end_event at line 271, avg 2µs/call
my $on_data = $last->{on_data} || sub {
268645116µs my ($self, $array, $items) = @_;
2696452.00ms push @$$array, @$items;
2706451.94ms };
271645798µs6451.36ms $on_data->($self, $data, $ref);
# spent 1.36ms making 645 calls to YAML::PP::Constructor::__ANON__[YAML/PP/Constructor.pm:270], avg 2µs/call
272645549µs push @{ $stack->[-1]->{ref} }, $$data;
273645339µs if (defined(my $anchor = $last->{event}->{anchor})) {
274 my $test = $self->anchors->{ $anchor };
275 $self->anchors->{ $anchor }->{finished} = 1;
276 }
2776453.87ms return;
278}
279
28013µ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
282127µ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 887ms (229+658) within YAML::PP::Constructor::scalar_event which was called 20941 times, avg 42µs/call: # 20941 times (229ms+658ms) 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 42µs/call
sub scalar_event {
285209414.12ms my ($self, $event) = @_;
286 DEBUG and warn "CONTENT $event->{value} ($event->{style})\n";
2872094136.5ms41882620ms my $value = $self->schema->load_scalar($self, $event);
# spent 608ms making 20941 calls to YAML::PP::Schema::load_scalar, avg 29µs/call # spent 11.7ms making 20941 calls to YAML::PP::Constructor::schema, avg 558ns/call
2882094119.2ms2094110.9ms my $last = $self->stack->[-1];
# spent 10.9ms making 20941 calls to YAML::PP::Constructor::stack, avg 523ns/call
2892094115.0ms2094113.6ms my $preserve_alias = $self->preserve_alias;
# spent 13.6ms making 20941 calls to YAML::PP::Constructor::preserve_alias, avg 651ns/call
2902094116.9ms2094113.3ms my $preserve_style = $self->preserve_scalar_style;
# spent 13.3ms making 20941 calls to YAML::PP::Constructor::preserve_scalar_style, avg 635ns/call
291209414.22ms 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.33ms if (defined (my $name = $event->{anchor})) {
309 $self->anchors->{ $name } = { data => \$value, finished => 1 };
310 }
3112094151.0ms 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
36216µs1;
363
364__END__
 
# spent 1µs within YAML::PP::Constructor::__ANON__ which was called: # once (1µs+0s) by YAML::PP::Constructor::BEGIN@8 at line 8
sub YAML::PP::Constructor::__ANON__; # xsub