Filename | /Users/ether/.perlbrew/libs/36.0@std/lib/perl5/YAML/PP/Reader.pm |
Statements | Executed 26744 statements in 59.9ms |
Calls | P | F | Exclusive Time |
Inclusive Time |
Subroutine |
---|---|---|---|---|---|
13361 | 1 | 1 | 29.1ms | 64.3ms | readline | YAML::PP::Reader::File::
13361 | 1 | 1 | 17.9ms | 21.9ms | CORE:readline (opcode) | YAML::PP::Reader::File::
1 | 1 | 1 | 203µs | 13.3ms | CORE:open (opcode) | YAML::PP::Reader::File::
1 | 1 | 1 | 16µs | 18µs | BEGIN@2.289 | YAML::PP::Parser::
1 | 1 | 1 | 12µs | 13.4ms | open_handle | YAML::PP::Reader::File::
1 | 1 | 1 | 6µs | 23µs | BEGIN@3.290 | YAML::PP::Parser::
1 | 1 | 1 | 6µs | 29µs | BEGIN@45 | YAML::PP::Reader::File::
1 | 1 | 1 | 6µs | 22µs | BEGIN@49 | YAML::PP::Reader::File::
2 | 2 | 2 | 5µs | 5µs | new | YAML::PP::Reader::
0 | 0 | 0 | 0s | 0s | read | YAML::PP::Reader::File::
0 | 0 | 0 | 0s | 0s | input | YAML::PP::Reader::
0 | 0 | 0 | 0s | 0s | read | YAML::PP::Reader::
0 | 0 | 0 | 0s | 0s | readline | YAML::PP::Reader::
0 | 0 | 0 | 0s | 0s | set_input | YAML::PP::Reader::
Line | State ments |
Time on line |
Calls | Time in subs |
Code |
---|---|---|---|---|---|
1 | # ABSTRACT: Reader class for YAML::PP representing input data | ||||
2 | 2 | 20µs | 2 | 20µs | # spent 18µs (16+2) within YAML::PP::Parser::BEGIN@2.289 which was called:
# once (16µs+2µs) by YAML::PP::Parser::BEGIN@21 at line 2 # spent 18µs making 1 call to YAML::PP::Parser::BEGIN@2.289
# spent 2µs making 1 call to strict::import |
3 | 2 | 300µs | 2 | 40µs | # spent 23µs (6+17) within YAML::PP::Parser::BEGIN@3.290 which was called:
# once (6µs+17µs) by YAML::PP::Parser::BEGIN@21 at line 3 # spent 23µs making 1 call to YAML::PP::Parser::BEGIN@3.290
# spent 17µs making 1 call to warnings::import |
4 | package YAML::PP::Reader; | ||||
5 | |||||
6 | 1 | 1µs | our $VERSION = '0.035'; # VERSION | ||
7 | |||||
8 | sub input { return $_[0]->{input} } | ||||
9 | sub set_input { $_[0]->{input} = $_[1] } | ||||
10 | |||||
11 | # spent 5µs within YAML::PP::Reader::new which was called 2 times, avg 2µs/call:
# once (3µs+0s) by YAML::PP::Parser::new at line 27 of YAML/PP/Parser.pm
# once (2µs+0s) by YAML::PP::Loader::load_file at line 84 of YAML/PP/Loader.pm | ||||
12 | 2 | 2µs | my ($class, %args) = @_; | ||
13 | 2 | 0s | my $input = delete $args{input}; | ||
14 | 2 | 6µs | return bless { | ||
15 | input => $input, | ||||
16 | }, $class; | ||||
17 | } | ||||
18 | |||||
19 | sub 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 | |||||
27 | sub 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 | |||||
43 | package YAML::PP::Reader::File; | ||||
44 | |||||
45 | 2 | 26µs | 2 | 52µs | # spent 29µs (6+23) within YAML::PP::Reader::File::BEGIN@45 which was called:
# once (6µs+23µs) by YAML::PP::Parser::BEGIN@21 at line 45 # spent 29µs making 1 call to YAML::PP::Reader::File::BEGIN@45
# spent 23µs making 1 call to Exporter::import |
46 | |||||
47 | 1 | 6µs | our @ISA = qw/ YAML::PP::Reader /; | ||
48 | |||||
49 | 2 | 156µs | 2 | 38µs | # spent 22µs (6+16) within YAML::PP::Reader::File::BEGIN@49 which was called:
# once (6µs+16µs) by YAML::PP::Parser::BEGIN@21 at line 49 # spent 22µs making 1 call to YAML::PP::Reader::File::BEGIN@49
# spent 16µs making 1 call to Exporter::import |
50 | |||||
51 | # spent 13.4ms (12µs+13.3) within YAML::PP::Reader::File::open_handle which was called:
# once (12µs+13.3ms) by YAML::PP::Reader::File::readline at line 74 | ||||
52 | 1 | 6µs | 1 | 1µs | if (openhandle( $_[0]->{input} )) { # spent 1µs making 1 call to Scalar::Util::openhandle |
53 | return $_[0]->{input}; | ||||
54 | } | ||||
55 | open my $fh, '<:encoding(UTF-8)', $_[0]->{input} | ||||
56 | 3 | 722µs | 5 | 25.8ms | or croak "Could not open '$_[0]->{input}' for reading: $!"; # spent 13.3ms making 1 call to YAML::PP::Reader::File::CORE:open
# spent 12.4ms making 1 call to PerlIO::import
# spent 112µ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 |
57 | 1 | 5µs | return $fh; | ||
58 | } | ||||
59 | |||||
60 | sub 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 64.3ms (29.1+35.2) within YAML::PP::Reader::File::readline which was called 13361 times, avg 5µs/call:
# 13361 times (29.1ms+35.2ms) by YAML::PP::Lexer::_fetch_next_line at line 141 of YAML/PP/Lexer.pm, avg 5µs/call | ||||
74 | 13361 | 3.89ms | 1 | 13.4ms | my $fh = $_[0]->{filehandle} ||= $_[0]->open_handle; # spent 13.4ms making 1 call to YAML::PP::Reader::File::open_handle |
75 | 13361 | 54.7ms | 14233 | 26.8ms | return scalar <$fh>; # spent 21.9ms making 13361 calls to YAML::PP::Reader::File::CORE:readline, avg 2µs/call
# spent 4.01ms making 436 calls to Encode::utf8::decode, avg 9µs/call
# spent 868µs making 436 calls to Encode::Encoding::renewed, avg 2µs/call |
76 | } | ||||
77 | |||||
78 | 1 | 3µs | 1; | ||
# spent 13.3ms (203µs+13.1) within YAML::PP::Reader::File::CORE:open which was called:
# once (203µs+13.1ms) by YAML::PP::Reader::File::open_handle at line 56 | |||||
# spent 21.9ms (17.9+4.01) within YAML::PP::Reader::File::CORE:readline which was called 13361 times, avg 2µs/call:
# 13361 times (17.9ms+4.01ms) by YAML::PP::Reader::File::readline at line 75, avg 2µs/call |