← Index
NYTProf Performance Profile   « line view »
For split.pl
  Run on Thu Apr 20 02:05:47 2023
Reported on Thu Apr 20 18:31:10 2023

Filename/home/hejohns/perl5/lib/perl5/x86_64-linux-gnu-thread-multi/Encode.pm
StatementsExecuted 1426 statements in 6.86ms
Subroutines
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
135345211.30s2.08sEncode::utf8::::decode Encode::utf8::decode (xsub)
13293011616ms616msEncode::utf8::::encode Encode::utf8::encode (xsub)
109113.07ms4.31msEncode::::getEncoding Encode::getEncoding (recurses: max depth 1, inclusive time 11µs)
109441.94ms6.24msEncode::::find_encoding Encode::find_encoding (recurses: max depth 1, inclusive time 16µs)
1111.68ms2.04msEncode::::BEGIN@56 Encode::BEGIN@56
1111.23ms1.52msEncode::::BEGIN@53 Encode::BEGIN@53
111363µs400µsEncode::::BEGIN@54 Encode::BEGIN@54
10811363µs363µsEncode::::find_alias Encode::find_alias
10911318µs318µsEncode::::CORE:subst Encode::CORE:subst (opcode)
72116µs16µsEncode::::define_encoding Encode::define_encoding
11115µs28µsEncode::::onBOOT Encode::onBOOT (xsub)
11111µs170µsEncode::::BEGIN@9 Encode::BEGIN@9
11110µs20µsEncode::::BEGIN@15 Encode::BEGIN@15
1117µs8µsEncode::::BEGIN@5 Encode::BEGIN@5
1117µs497µsEncode::UTF_EBCDIC::::BEGIN@178Encode::UTF_EBCDIC::BEGIN@178
1116µs8µsEncode::utf8::::BEGIN@229 Encode::utf8::BEGIN@229
1115µs17µsEncode::XS::::BEGIN@210 Encode::XS::BEGIN@210
1114µs34µsEncode::::BEGIN@7 Encode::BEGIN@7
1114µs15µsEncode::utf8::::BEGIN@215 Encode::utf8::BEGIN@215
1113µs15µsEncode::::BEGIN@6 Encode::BEGIN@6
1112µs2µsEncode::::CORE:match Encode::CORE:match (opcode)
1112µs2µsEncode::::BEGIN@17 Encode::BEGIN@17
111800ns800nsEncode::::STOP_AT_PARTIAL Encode::STOP_AT_PARTIAL (xsub)
111600ns600nsEncode::::__ANON__ Encode::__ANON__ (xsub)
111200ns200nsEncode::::LEAVE_SRC Encode::LEAVE_SRC (xsub)
0000s0sEncode::UTF_EBCDIC::::decodeEncode::UTF_EBCDIC::decode
0000s0sEncode::UTF_EBCDIC::::encodeEncode::UTF_EBCDIC::encode
0000s0sEncode::::clone_encoding Encode::clone_encoding
0000s0sEncode::::define_alias Encode::define_alias
0000s0sEncode::::encodings Encode::encodings
0000s0sEncode::::find_mime_encoding Encode::find_mime_encoding
0000s0sEncode::::perlio_ok Encode::perlio_ok
0000s0sEncode::::resolve_alias Encode::resolve_alias
0000s0sEncode::utf8::::cat_decode Encode::utf8::cat_decode
Call graph for these subroutines as a Graphviz dot language file.
Line State
ments
Time
on line
Calls Time
in subs
Code
1#
2# $Id: Encode.pm,v 3.19 2022/08/04 04:42:30 dankogai Exp $
3#
4package Encode;
5215µs29µs
# spent 8µs (7+1) within Encode::BEGIN@5 which was called: # once (7µs+1µs) by Pod::Text::BEGIN@24 at line 5
use strict;
# spent 8µs making 1 call to Encode::BEGIN@5 # spent 1µs making 1 call to strict::import
6220µs227µs
# spent 15µs (3+12) within Encode::BEGIN@6 which was called: # once (3µs+12µs) by Pod::Text::BEGIN@24 at line 6
use warnings;
# spent 15µs making 1 call to Encode::BEGIN@6 # spent 12µs making 1 call to warnings::import
7257µs264µs
# spent 34µs (4+30) within Encode::BEGIN@7 which was called: # once (4µs+30µs) by Pod::Text::BEGIN@24 at line 7
use constant DEBUG => !!$ENV{PERL_ENCODE_DEBUG};
# spent 34µs making 1 call to Encode::BEGIN@7 # spent 30µs making 1 call to constant::import
8our $VERSION;
9
# spent 170µs (11+159) within Encode::BEGIN@9 which was called: # once (11µs+159µs) by Pod::Text::BEGIN@24 at line 13
BEGIN {
1017µs12µs $VERSION = sprintf "%d.%02d", q$Revision: 3.19 $ =~ /(\d+)/g;
# spent 2µs making 1 call to Encode::CORE:match
111300ns require XSLoader;
121162µs1156µs XSLoader::load( __PACKAGE__, $VERSION );
# spent 156µs making 1 call to XSLoader::load
13140µs1170µs}
# spent 170µs making 1 call to Encode::BEGIN@9
14
15327µs329µs
# spent 20µs (10+10) within Encode::BEGIN@15 which was called: # once (10µs+10µs) by Pod::Text::BEGIN@24 at line 15
use Exporter 5.57 'import';
# spent 20µs making 1 call to Encode::BEGIN@15 # spent 6µs making 1 call to version::_VERSION # spent 4µs making 1 call to Exporter::import
16
17295µs12µs
# spent 2µs within Encode::BEGIN@17 which was called: # once (2µs+0s) by Pod::Text::BEGIN@24 at line 17
use Carp ();
# spent 2µs making 1 call to Encode::BEGIN@17
181600nsour @CARP_NOT = qw(Encode::Encoder);
19
20# Public, encouraged API is exported by default
21
2212µsour @EXPORT = qw(
23 decode decode_utf8 encode encode_utf8 str2bytes bytes2str
24 encodings find_encoding find_mime_encoding clone_encoding
25);
261800nsour @FB_FLAGS = qw(
27 DIE_ON_ERR WARN_ON_ERR RETURN_ON_ERR LEAVE_SRC
28 PERLQQ HTMLCREF XMLCREF STOP_AT_PARTIAL
29);
301700nsour @FB_CONSTS = qw(
31 FB_DEFAULT FB_CROAK FB_QUIET FB_WARN
32 FB_PERLQQ FB_HTMLCREF FB_XMLCREF
33);
3411µsour @EXPORT_OK = (
35 qw(
36 _utf8_off _utf8_on define_encoding from_to is_16bit is_8bit
37 is_utf8 perlio_ok resolve_alias utf8_downgrade utf8_upgrade
38 ),
39 @FB_FLAGS, @FB_CONSTS,
40);
41
4216µsour %EXPORT_TAGS = (
43 all => [ @EXPORT, @EXPORT_OK ],
44 default => [ @EXPORT ],
45 fallbacks => [ @FB_CONSTS ],
46 fallback_all => [ @FB_CONSTS, @FB_FLAGS ],
47);
48
49# Documentation moved after __END__ for speed - NI-S
50
511200nsour $ON_EBCDIC = ( ord("A") == 193 );
52
53297µs11.52ms
# spent 1.52ms (1.23+285µs) within Encode::BEGIN@53 which was called: # once (1.23ms+285µs) by Pod::Text::BEGIN@24 at line 53
use Encode::Alias ();
# spent 1.52ms making 1 call to Encode::BEGIN@53
54285µs2401µs
# spent 400µs (363+37) within Encode::BEGIN@54 which was called: # once (363µs+37µs) by Pod::Text::BEGIN@24 at line 54
use Encode::MIME::Name;
# spent 400µs making 1 call to Encode::BEGIN@54 # spent 600ns making 1 call to Encode::__ANON__
55
562574µs22.06ms
# spent 2.04ms (1.68+364µs) within Encode::BEGIN@56 which was called: # once (1.68ms+364µs) by Pod::Text::BEGIN@24 at line 56
use Storable;
# spent 2.04ms making 1 call to Encode::BEGIN@56 # spent 18µs making 1 call to Exporter::import
57
58# Make a %Encoding package variable to allow a certain amount of cheating
59our %Encoding;
60our %ExtModule;
61184µsrequire Encode::Config;
62# See
63# https://bugzilla.redhat.com/show_bug.cgi?id=435505#c2
64# to find why sig handlers inside eval{} are disabled.
651200nseval {
6612µs local $SIG{__DIE__};
671400ns local $SIG{__WARN__};
6812µs local @INC = @INC;
691600ns pop @INC if @INC && $INC[-1] eq '.';
70149µs require Encode::ConfigLocal;
71};
72
73sub encodings {
74 my %enc;
75 my $arg = $_[1] || '';
76 if ( $arg eq ":all" ) {
77 %enc = ( %Encoding, %ExtModule );
78 }
79 else {
80 %enc = %Encoding;
81 for my $mod ( map { m/::/ ? $_ : "Encode::$_" } @_ ) {
82 DEBUG and warn $mod;
83 for my $enc ( keys %ExtModule ) {
84 $ExtModule{$enc} eq $mod and $enc{$enc} = $mod;
85 }
86 }
87 }
88 return sort { lc $a cmp lc $b }
89 grep { !/^(?:Internal|Unicode|Guess)$/o } keys %enc;
90}
91
92sub perlio_ok {
93 my $obj = ref( $_[0] ) ? $_[0] : find_encoding( $_[0] );
94 $obj->can("perlio_ok") and return $obj->perlio_ok();
95 return 0; # safety net
96}
97
98
# spent 16µs within Encode::define_encoding which was called 7 times, avg 2µs/call: # 5 times (12µs+0s) by Encode::onBOOT at line 174, avg 2µs/call # 2 times (4µs+0s) by Pod::Text::BEGIN@24 at line 222, avg 2µs/call
sub define_encoding {
9971µs my $obj = shift;
10071µs my $name = shift;
10172µs $Encoding{$name} = $obj;
10272µs my $lc = lc($name);
1037800ns define_alias( $lc => $obj ) unless $lc eq $name;
1047800ns while (@_) {
105 my $alias = shift;
106 define_alias( $alias, $obj );
107 }
10871µs my $class = ref($obj);
10973µs push @Encode::CARP_NOT, $class unless grep { $_ eq $class } @Encode::CARP_NOT;
11072µs push @Encode::Encoding::CARP_NOT, $class unless grep { $_ eq $class } @Encode::Encoding::CARP_NOT;
11177µs return $obj;
112}
113
114
# spent 4.31ms (3.07+1.24) within Encode::getEncoding which was called 109 times, avg 40µs/call: # 109 times (3.07ms+1.24ms) by Encode::find_encoding at line 153, avg 40µs/call
sub getEncoding {
115109245µs my ( $class, $name, $skip_external ) = @_;
116
11710928µs defined($name) or return;
118
119109712µs109318µs $name =~ s/\s+//g; # https://rt.cpan.org/Ticket/Display.html?id=65796
# spent 318µs making 109 calls to Encode::CORE:subst, avg 3µs/call
120
12110923µs ref($name) && $name->can('renew') and return $name;
12210991µs exists $Encoding{$name} and return $Encoding{$name};
123108537µs my $lc = lc $name;
12410830µs exists $Encoding{$lc} and return $Encoding{$lc};
125
126108155µs108363µs my $oc = $class->find_alias($name);
# spent 363µs making 108 calls to Encode::find_alias, avg 3µs/call
127108386µs defined($oc) and return $oc;
128 $lc ne $name and $oc = $class->find_alias($lc);
129 defined($oc) and return $oc;
130
131 unless ($skip_external) {
132 if ( my $mod = $ExtModule{$name} || $ExtModule{$lc} ) {
133 $mod =~ s,::,/,g;
134 $mod .= '.pm';
135 eval { require $mod; };
136 exists $Encoding{$name} and return $Encoding{$name};
137 }
138 }
139 return;
140}
141
142# HACK: These two functions must be defined in Encode and because of
143# cyclic dependency between Encode and Encode::Alias, Exporter does not work
144
# spent 363µs within Encode::find_alias which was called 108 times, avg 3µs/call: # 108 times (363µs+0s) by Encode::getEncoding at line 126, avg 3µs/call
sub find_alias {
1451081.11ms108565µs goto &Encode::Alias::find_alias;
# spent 566µs making 108 calls to Encode::Alias::find_alias, avg 5µs/call, recursion: max depth 1, sum of overlapping time 1µs
146}
147sub define_alias {
148 goto &Encode::Alias::define_alias;
149}
150
151
# spent 6.24ms (1.94+4.30) within Encode::find_encoding which was called 109 times, avg 57µs/call: # 105 times (1.93ms+4.23ms) by Text::CSV_XS::CORE:open at line 1240 of Text/CSV_XS.pm, avg 59µs/call # 2 times (5µs+-5µs) by Encode::Alias::find_alias at line 44 of Encode/Alias.pm, avg 0s/call # once (4µs+64µs) by ExtUtils::MakeMaker::Locale::_init at line 120 of ExtUtils/MakeMaker/Locale.pm # once (1µs+20µs) by IPC::Cmd::can_run at line 15 of ExtUtils/MakeMaker.pm
sub find_encoding($;$) {
152109406µs my ( $name, $skip_external ) = @_;
1531091.45ms1094.31ms return __PACKAGE__->getEncoding( $name, $skip_external );
# spent 4.32ms making 109 calls to Encode::getEncoding, avg 40µs/call, recursion: max depth 1, sum of overlapping time 11µs
154}
155
156sub find_mime_encoding($;$) {
157 my ( $mime_name, $skip_external ) = @_;
158 my $name = Encode::MIME::Name::get_encode_name( $mime_name );
159 return find_encoding( $name, $skip_external );
160}
161
162sub resolve_alias($) {
163 my $obj = find_encoding(shift);
164 defined $obj and return $obj->name;
165 return;
166}
167
168sub clone_encoding($) {
169 my $obj = find_encoding(shift);
170 ref $obj or return;
171 return Storable::dclone($obj);
172}
173
174114µs640µsonBOOT;
# spent 28µs making 1 call to Encode::onBOOT # spent 12µs making 5 calls to Encode::define_encoding, avg 2µs/call
175
1761200nsif ($ON_EBCDIC) {
177 package Encode::UTF_EBCDIC;
1782123µs2987µs
# spent 497µs (7+490) within Encode::UTF_EBCDIC::BEGIN@178 which was called: # once (7µs+490µs) by Pod::Text::BEGIN@24 at line 178
use parent 'Encode::Encoding';
# spent 497µs making 1 call to Encode::UTF_EBCDIC::BEGIN@178 # spent 490µs making 1 call to parent::import
179 my $obj = bless { Name => "UTF_EBCDIC" } => "Encode::UTF_EBCDIC";
180 Encode::define_encoding($obj, 'Unicode');
181 sub decode {
182 my ( undef, $str, $chk ) = @_;
183 my $res = '';
184 for ( my $i = 0 ; $i < length($str) ; $i++ ) {
185 $res .=
186 chr(
187 utf8::unicode_to_native( ord( substr( $str, $i, 1 ) ) )
188 );
189 }
190 $_[1] = '' if $chk;
191 return $res;
192 }
193 sub encode {
194 my ( undef, $str, $chk ) = @_;
195 my $res = '';
196 for ( my $i = 0 ; $i < length($str) ; $i++ ) {
197 $res .=
198 chr(
199 utf8::native_to_unicode( ord( substr( $str, $i, 1 ) ) )
200 );
201 }
202 $_[1] = '' if $chk;
203 return $res;
204 }
205}
206
207{
208 # https://rt.cpan.org/Public/Bug/Display.html?id=103253
209 package Encode::XS;
210228µs229µs
# spent 17µs (5+12) within Encode::XS::BEGIN@210 which was called: # once (5µs+12µs) by Pod::Text::BEGIN@24 at line 210
use parent 'Encode::Encoding';
# spent 17µs making 1 call to Encode::XS::BEGIN@210 # spent 12µs making 1 call to parent::import
211}
212
213{
2141100ns package Encode::utf8;
215264µs225µs
# spent 15µs (4+11) within Encode::utf8::BEGIN@215 which was called: # once (4µs+11µs) by Pod::Text::BEGIN@24 at line 215
use parent 'Encode::Encoding';
# spent 15µs making 1 call to Encode::utf8::BEGIN@215 # spent 11µs making 1 call to parent::import
21612µs my %obj = (
217 'utf8' => { Name => 'utf8' },
218 'utf-8-strict' => { Name => 'utf-8-strict', strict_utf8 => 1 }
219 );
22011µs for ( keys %obj ) {
2212600ns bless $obj{$_} => __PACKAGE__;
22221µs24µs Encode::define_encoding( $obj{$_} => $_ );
# spent 4µs making 2 calls to Encode::define_encoding, avg 2µs/call
223 }
224 sub cat_decode {
225 # ($obj, $dst, $src, $pos, $trm, $chk)
226 # currently ignores $chk
227 my ( undef, undef, undef, $pos, $trm ) = @_;
228 my ( $rdst, $rsrc, $rpos ) = \@_[ 1, 2, 3 ];
229289µs210µs
# spent 8µs (6+2) within Encode::utf8::BEGIN@229 which was called: # once (6µs+2µs) by Pod::Text::BEGIN@24 at line 229
use bytes;
# spent 8µs making 1 call to Encode::utf8::BEGIN@229 # spent 2µs making 1 call to bytes::import
230 if ( ( my $npos = index( $$rsrc, $trm, $pos ) ) >= 0 ) {
231 $$rdst .=
232 substr( $$rsrc, $pos, $npos - $pos + length($trm) );
233 $$rpos = $npos + length($trm);
234 return 1;
235 }
236 $$rdst .= substr( $$rsrc, $pos );
237 $$rpos = length($$rsrc);
238 return '';
239 }
240}
241
242216µs1;
243
244__END__
 
# spent 2µs within Encode::CORE:match which was called: # once (2µs+0s) by Encode::BEGIN@9 at line 10
sub Encode::CORE:match; # opcode
# spent 318µs within Encode::CORE:subst which was called 109 times, avg 3µs/call: # 109 times (318µs+0s) by Encode::getEncoding at line 119, avg 3µs/call
sub Encode::CORE:subst; # opcode
# spent 200ns within Encode::LEAVE_SRC which was called: # once (200ns+0s) by XSLoader::load at line 112 of XSLoader.pm
sub Encode::LEAVE_SRC; # xsub
# spent 800ns within Encode::STOP_AT_PARTIAL which was called: # once (800ns+0s) by XSLoader::load at line 112 of XSLoader.pm
sub Encode::STOP_AT_PARTIAL; # xsub
# spent 600ns within Encode::__ANON__ which was called: # once (600ns+0s) by Encode::BEGIN@54 at line 54
sub Encode::__ANON__; # xsub
# spent 28µs (15+12) within Encode::onBOOT which was called: # once (15µs+12µs) by Pod::Text::BEGIN@24 at line 174
sub Encode::onBOOT; # xsub
# spent 2.08s (1.30+778ms) within Encode::utf8::decode which was called 135345 times, avg 15µs/call: # 135240 times (1.30s+778ms) by Text::CSV_XS::CORE:readline at line 1047 of Text/CSV_XS.pm, avg 15µs/call # 105 times (799µs+129µs) by Text::CSV_XS::CORE:readline at line 1421 of Text/CSV_XS.pm, avg 9µs/call
sub Encode::utf8::decode; # xsub
# spent 616ms within Encode::utf8::encode which was called 132930 times, avg 5µs/call: # 132930 times (616ms+0s) by IPC::Run::_spawn at line 1445 of IPC/Run.pm, avg 5µs/call
sub Encode::utf8::encode; # xsub