← Index
NYTProf Performance Profile   « line view »
For ../prof.pl
  Run on Wed Dec 14 15:57:08 2022
Reported on Wed Dec 14 16:00:36 2022

Filename/Users/ether/.perlbrew/libs/36.0@std/lib/perl5/YAML/PP/Reader.pm
StatementsExecuted 26934 statements in 83.6ms
Subroutines
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
134561140.5ms78.4msYAML::PP::Reader::File::::readlineYAML::PP::Reader::File::readline
134561128.9ms33.5msYAML::PP::Reader::File::::CORE:readlineYAML::PP::Reader::File::CORE:readline (opcode)
1112.12ms4.38msYAML::PP::Reader::File::::CORE:openYAML::PP::Reader::File::CORE:open (opcode)
11130µs34µsYAML::PP::Parser::::BEGIN@2.288 YAML::PP::Parser::BEGIN@2.288
11118µs48µsYAML::PP::Parser::::BEGIN@3.289 YAML::PP::Parser::BEGIN@3.289
11115µs4.40msYAML::PP::Reader::File::::open_handleYAML::PP::Reader::File::open_handle
22210µs10µsYAML::PP::Reader::::new YAML::PP::Reader::new
1117µs19µsYAML::PP::Reader::File::::BEGIN@49YAML::PP::Reader::File::BEGIN@49
1116µs36µsYAML::PP::Reader::File::::BEGIN@45YAML::PP::Reader::File::BEGIN@45
0000s0sYAML::PP::Reader::File::::readYAML::PP::Reader::File::read
0000s0sYAML::PP::Reader::::input YAML::PP::Reader::input
0000s0sYAML::PP::Reader::::read YAML::PP::Reader::read
0000s0sYAML::PP::Reader::::readline YAML::PP::Reader::readline
0000s0sYAML::PP::Reader::::set_input YAML::PP::Reader::set_input
Call graph for these subroutines as a Graphviz dot language file.
Line State
ments
Time
on line
Calls Time
in subs
Code
1# ABSTRACT: Reader class for YAML::PP representing input data
2231µs238µs
# spent 34µs (30+4) within YAML::PP::Parser::BEGIN@2.288 which was called: # once (30µs+4µs) by YAML::PP::Parser::BEGIN@21 at line 2
use strict;
# spent 34µs making 1 call to YAML::PP::Parser::BEGIN@2.288 # spent 4µs making 1 call to strict::import
32263µs278µs
# spent 48µs (18+30) within YAML::PP::Parser::BEGIN@3.289 which was called: # once (18µs+30µs) by YAML::PP::Parser::BEGIN@21 at line 3
use warnings;
# spent 48µs making 1 call to YAML::PP::Parser::BEGIN@3.289 # spent 30µs making 1 call to warnings::import
4package YAML::PP::Reader;
5
611µsour $VERSION = '0.035'; # VERSION
7
8sub input { return $_[0]->{input} }
9sub set_input { $_[0]->{input} = $_[1] }
10
11
# spent 10µs within YAML::PP::Reader::new which was called 2 times, avg 5µs/call: # once (6µs+0s) by YAML::PP::Parser::new at line 27 of YAML/PP/Parser.pm # once (4µs+0s) by YAML::PP::Loader::load_file at line 84 of YAML/PP/Loader.pm
sub new {
1222µs my ($class, %args) = @_;
1322µs my $input = delete $args{input};
1428µs return bless {
15 input => $input,
16 }, $class;
17}
18
19sub read {
20 my ($self) = @_;
21 my $pos = pos $self->{input} || 0;
22 my $yaml = substr($self->{input}, $pos);
23 $self->{input} = '';
24 return $yaml;
25}
26
27sub readline {
28 my ($self) = @_;
29 unless (length $self->{input}) {
30 return;
31 }
32 if ( $self->{input} =~ m/\G([^\r\n]*(?:\n|\r\n|\r|\z))/g ) {
33 my $line = $1;
34 unless (length $line) {
35 $self->{input} = '';
36 return;
37 }
38 return $line;
39 }
40 return;
41}
42
43package YAML::PP::Reader::File;
44
45231µs266µs
# spent 36µs (6+30) within YAML::PP::Reader::File::BEGIN@45 which was called: # once (6µs+30µs) by YAML::PP::Parser::BEGIN@21 at line 45
use Scalar::Util qw/ openhandle /;
# spent 36µs making 1 call to YAML::PP::Reader::File::BEGIN@45 # spent 30µs making 1 call to Exporter::import
46
4717µsour @ISA = qw/ YAML::PP::Reader /;
48
492171µs231µs
# spent 19µs (7+12) within YAML::PP::Reader::File::BEGIN@49 which was called: # once (7µs+12µs) by YAML::PP::Parser::BEGIN@21 at line 49
use Carp qw/ croak /;
# spent 19µs making 1 call to YAML::PP::Reader::File::BEGIN@49 # spent 12µs making 1 call to Exporter::import
50
51
# spent 4.40ms (15µs+4.38) within YAML::PP::Reader::File::open_handle which was called: # once (15µs+4.38ms) by YAML::PP::Reader::File::readline at line 74
sub open_handle {
5217µs12µs if (openhandle( $_[0]->{input} )) {
# spent 2µs making 1 call to Scalar::Util::openhandle
53 return $_[0]->{input};
54 }
55 open my $fh, '<:encoding(UTF-8)', $_[0]->{input}
563675µs56.10ms or croak "Could not open '$_[0]->{input}' for reading: $!";
# spent 4.38ms making 1 call to YAML::PP::Reader::File::CORE:open # spent 1.60ms making 1 call to PerlIO::import # spent 113µs making 1 call to Encode::find_encoding # spent 6µs making 1 call to Encode::Encoding::renew # spent 1µs making 1 call to Encode::Encoding::needs_lines
5713µs return $fh;
58}
59
60sub read {
61 my $fh = $_[0]->{filehandle} ||= $_[0]->open_handle;
62 if (wantarray) {
63 my @yaml = <$fh>;
64 return @yaml;
65 }
66 else {
67 local $/;
68 my $yaml = <$fh>;
69 return $yaml;
70 }
71}
72
73
# spent 78.4ms (40.5+37.9) within YAML::PP::Reader::File::readline which was called 13456 times, avg 6µs/call: # 13456 times (40.5ms+37.9ms) by YAML::PP::Lexer::_fetch_next_line at line 141 of YAML/PP/Lexer.pm, avg 6µs/call
sub readline {
74134565.88ms14.40ms my $fh = $_[0]->{filehandle} ||= $_[0]->open_handle;
# spent 4.40ms making 1 call to YAML::PP::Reader::File::open_handle
751345676.5ms1433439.3ms return scalar <$fh>;
# spent 33.5ms making 13456 calls to YAML::PP::Reader::File::CORE:readline, avg 2µs/call # spent 4.68ms making 439 calls to Encode::utf8::decode, avg 11µs/call # spent 1.04ms making 439 calls to Encode::Encoding::renewed, avg 2µs/call
76}
77
7813µs1;
 
# spent 4.38ms (2.12+2.26) within YAML::PP::Reader::File::CORE:open which was called: # once (2.12ms+2.26ms) by YAML::PP::Reader::File::open_handle at line 56
sub YAML::PP::Reader::File::CORE:open; # opcode
# spent 33.5ms (28.9+4.68) within YAML::PP::Reader::File::CORE:readline which was called 13456 times, avg 2µs/call: # 13456 times (28.9ms+4.68ms) by YAML::PP::Reader::File::readline at line 75, avg 2µs/call
sub YAML::PP::Reader::File::CORE:readline; # opcode