← 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:01 2022

Filename/Users/ether/perl5/perlbrew/perls/36.0/lib/5.36.0/darwin-2level/Encode.pm
StatementsExecuted 154 statements in 12.0ms
Subroutines
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
82941711608ms608msEncode::utf8::::encode Encode::utf8::encode (xsub)
18622222558ms704msEncode::utf8::::decode Encode::utf8::decode (xsub)
1113.60ms4.01msEncode::::BEGIN@53 Encode::BEGIN@53
1112.82ms19.4msEncode::::BEGIN@56 Encode::BEGIN@56
1111.70ms1.77msEncode::::BEGIN@54 Encode::BEGIN@54
111651µs696µsEncode::utf8::::BEGIN@229 Encode::utf8::BEGIN@229
111643µs1.60msEncode::UTF_EBCDIC::::BEGIN@178Encode::UTF_EBCDIC::BEGIN@178
11158µs93µsEncode::::BEGIN@15 Encode::BEGIN@15
31145µs125µsEncode::::getEncoding Encode::getEncoding (recurses: max depth 1, inclusive time 11µs)
11138µs61µsEncode::::onBOOT Encode::onBOOT (xsub)
72128µs28µsEncode::::define_encoding Encode::define_encoding
11118µs20µsEncode::::BEGIN@5 Encode::BEGIN@5
33318µs137µsEncode::::find_encoding Encode::find_encoding (recurses: max depth 1, inclusive time 17µs)
11114µs4.97msEncode::::BEGIN@9 Encode::BEGIN@9
11110µs10µsEncode::::CORE:match Encode::CORE:match (opcode)
1116µs17µsEncode::XS::::BEGIN@210 Encode::XS::BEGIN@210
1115µs34µsEncode::::BEGIN@6 Encode::BEGIN@6
1114µs24µsEncode::::BEGIN@7 Encode::BEGIN@7
3114µs4µsEncode::::CORE:subst Encode::CORE:subst (opcode)
1114µs4µsEncode::::STOP_AT_PARTIAL Encode::STOP_AT_PARTIAL (xsub)
2113µs3µsEncode::::find_alias Encode::find_alias
1112µs2µsEncode::::BEGIN@17 Encode::BEGIN@17
1112µs8µsEncode::utf8::::BEGIN@215 Encode::utf8::BEGIN@215
1111µs1µsEncode::::__ANON__ Encode::__ANON__ (xsub)
1110s0sEncode::::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.17 2022/04/07 03:05:51 dankogai Exp $
3#
4package Encode;
5218µs222µs
# spent 20µs (18+2) within Encode::BEGIN@5 which was called: # once (18µs+2µs) by OpenAPI::Modern::BEGIN@24 at line 5
use strict;
# spent 20µs making 1 call to Encode::BEGIN@5 # spent 2µs making 1 call to strict::import
6220µs263µs
# spent 34µs (5+29) within Encode::BEGIN@6 which was called: # once (5µs+29µs) by OpenAPI::Modern::BEGIN@24 at line 6
use warnings;
# spent 34µs making 1 call to Encode::BEGIN@6 # spent 29µs making 1 call to warnings::import
7253µs244µs
# spent 24µs (4+20) within Encode::BEGIN@7 which was called: # once (4µs+20µs) by OpenAPI::Modern::BEGIN@24 at line 7
use constant DEBUG => !!$ENV{PERL_ENCODE_DEBUG};
# spent 24µs making 1 call to Encode::BEGIN@7 # spent 20µs making 1 call to constant::import
8our $VERSION;
9
# spent 4.97ms (14µs+4.95) within Encode::BEGIN@9 which was called: # once (14µs+4.95ms) by OpenAPI::Modern::BEGIN@24 at line 13
BEGIN {
10114µs110µs $VERSION = sprintf "%d.%02d", q$Revision: 3.17 $ =~ /(\d+)/g;
# spent 10µs making 1 call to Encode::CORE:match
1110s require XSLoader;
1214.96ms14.94ms XSLoader::load( __PACKAGE__, $VERSION );
# spent 4.94ms making 1 call to XSLoader::load
13160µs14.97ms}
# spent 4.97ms making 1 call to Encode::BEGIN@9
14
153108µs3128µs
# spent 93µs (58+35) within Encode::BEGIN@15 which was called: # once (58µs+35µs) by OpenAPI::Modern::BEGIN@24 at line 15
use Exporter 5.57 'import';
# spent 93µs making 1 call to Encode::BEGIN@15 # spent 25µs making 1 call to UNIVERSAL::VERSION # spent 10µs making 1 call to Exporter::import
16
172171µs12µs
# spent 2µs within Encode::BEGIN@17 which was called: # once (2µs+0s) by OpenAPI::Modern::BEGIN@24 at line 17
use Carp ();
# spent 2µs making 1 call to Encode::BEGIN@17
1811µsour @CARP_NOT = qw(Encode::Encoder);
19
20# Public, encouraged API is exported by default
21
2211µsour @EXPORT = qw(
23 decode decode_utf8 encode encode_utf8 str2bytes bytes2str
24 encodings find_encoding find_mime_encoding clone_encoding
25);
2611µsour @FB_FLAGS = qw(
27 DIE_ON_ERR WARN_ON_ERR RETURN_ON_ERR LEAVE_SRC
28 PERLQQ HTMLCREF XMLCREF STOP_AT_PARTIAL
29);
3011µsour @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
4214µ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
5110sour $ON_EBCDIC = ( ord("A") == 193 );
52
5322.02ms14.01ms
# spent 4.01ms (3.60+412µs) within Encode::BEGIN@53 which was called: # once (3.60ms+412µs) by OpenAPI::Modern::BEGIN@24 at line 53
use Encode::Alias ();
# spent 4.01ms making 1 call to Encode::BEGIN@53
5421.39ms21.77ms
# spent 1.77ms (1.70+63µs) within Encode::BEGIN@54 which was called: # once (1.70ms+63µs) by OpenAPI::Modern::BEGIN@24 at line 54
use Encode::MIME::Name;
# spent 1.77ms making 1 call to Encode::BEGIN@54 # spent 1µs making 1 call to Encode::__ANON__
55
5621.05ms219.5ms
# spent 19.4ms (2.82+16.6) within Encode::BEGIN@56 which was called: # once (2.82ms+16.6ms) by OpenAPI::Modern::BEGIN@24 at line 56
use Storable;
# spent 19.4ms making 1 call to Encode::BEGIN@56 # spent 30µ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;
611539µ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.
6510seval {
6612µs local $SIG{__DIE__};
6711µs local $SIG{__WARN__};
6811µs local @INC = @INC;
6911µs pop @INC if @INC && $INC[-1] eq '.';
70195µ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 28µs within Encode::define_encoding which was called 7 times, avg 4µs/call: # 5 times (23µs+0s) by Encode::onBOOT at line 174, avg 5µs/call # 2 times (5µs+0s) by OpenAPI::Modern::BEGIN@24 at line 222, avg 2µs/call
sub define_encoding {
9971µs my $obj = shift;
10070s my $name = shift;
10172µs $Encoding{$name} = $obj;
102713µs my $lc = lc($name);
10371µs define_alias( $lc => $obj ) unless $lc eq $name;
10470s while (@_) {
105 my $alias = shift;
106 define_alias( $alias, $obj );
107 }
10872µs my $class = ref($obj);
10972µs push @Encode::CARP_NOT, $class unless grep { $_ eq $class } @Encode::CARP_NOT;
11073µs push @Encode::Encoding::CARP_NOT, $class unless grep { $_ eq $class } @Encode::Encoding::CARP_NOT;
11179µs return $obj;
112}
113
114
# spent 125µs (45+80) within Encode::getEncoding which was called 3 times, avg 42µs/call: # 3 times (45µs+80µs) by Encode::find_encoding at line 153, avg 42µs/call
sub getEncoding {
11531µs my ( $class, $name, $skip_external ) = @_;
116
11733µs defined($name) or return;
118
119314µs34µs $name =~ s/\s+//g; # https://rt.cpan.org/Ticket/Display.html?id=65796
# spent 4µs making 3 calls to Encode::CORE:subst, avg 1µs/call
120
12131µs ref($name) && $name->can('renew') and return $name;
12237µs exists $Encoding{$name} and return $Encoding{$name};
12322µs my $lc = lc $name;
12421µs exists $Encoding{$lc} and return $Encoding{$lc};
125
12623µs23µs my $oc = $class->find_alias($name);
# spent 3µs making 2 calls to Encode::find_alias, avg 2µs/call
12724µ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 3µs within Encode::find_alias which was called 2 times, avg 2µs/call: # 2 times (3µs+0s) by Encode::getEncoding at line 126, avg 2µs/call
sub find_alias {
14528µs284µs goto &Encode::Alias::find_alias;
# spent 84µs making 2 calls to Encode::Alias::find_alias, avg 42µs/call
146}
147sub define_alias {
148 goto &Encode::Alias::define_alias;
149}
150
151
# spent 137µs (18+119) within Encode::find_encoding which was called 3 times, avg 46µs/call: # once (6µs+106µs) by YAML::PP::Reader::File::CORE:open at line 56 of YAML/PP/Reader.pm # once (6µs+19µs) by Mojo::Util::_encoding at line 444 of Mojo/Util.pm # once (6µs+-6µs) by Encode::Alias::find_alias at line 44 of Encode/Alias.pm
sub find_encoding($;$) {
15232µs my ( $name, $skip_external ) = @_;
153322µs3125µs return __PACKAGE__->getEncoding( $name, $skip_external );
# spent 136µs making 3 calls to Encode::getEncoding, avg 45µ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
174138µs684µsonBOOT;
# spent 61µs making 1 call to Encode::onBOOT # spent 23µs making 5 calls to Encode::define_encoding, avg 5µs/call
175
17610sif ($ON_EBCDIC) {
177 package Encode::UTF_EBCDIC;
1782641µs22.52ms
# spent 1.60ms (643µs+958µs) within Encode::UTF_EBCDIC::BEGIN@178 which was called: # once (643µs+958µs) by OpenAPI::Modern::BEGIN@24 at line 178
use parent 'Encode::Encoding';
# spent 1.60ms making 1 call to Encode::UTF_EBCDIC::BEGIN@178 # spent 924µ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;
210219µs228µs
# spent 17µs (6+11) within Encode::XS::BEGIN@210 which was called: # once (6µs+11µs) by OpenAPI::Modern::BEGIN@24 at line 210
use parent 'Encode::Encoding';
# spent 17µs making 1 call to Encode::XS::BEGIN@210 # spent 11µs making 1 call to parent::import
211}
212
213{
21410s package Encode::utf8;
215258µs214µs
# spent 8µs (2+6) within Encode::utf8::BEGIN@215 which was called: # once (2µs+6µs) by OpenAPI::Modern::BEGIN@24 at line 215
use parent 'Encode::Encoding';
# spent 8µs making 1 call to Encode::utf8::BEGIN@215 # spent 6µ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 );
22012µs for ( keys %obj ) {
22121µs bless $obj{$_} => __PACKAGE__;
22222µs25µs Encode::define_encoding( $obj{$_} => $_ );
# spent 5µ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 ];
2292606µs2697µs
# spent 696µs (651+45) within Encode::utf8::BEGIN@229 which was called: # once (651µs+45µs) by OpenAPI::Modern::BEGIN@24 at line 229
use bytes;
# spent 696µs making 1 call to Encode::utf8::BEGIN@229 # spent 1µ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
242212µs1;
243
244__END__
 
# spent 10µs within Encode::CORE:match which was called: # once (10µs+0s) by Encode::BEGIN@9 at line 10
sub Encode::CORE:match; # opcode
# spent 4µs within Encode::CORE:subst which was called 3 times, avg 1µs/call: # 3 times (4µs+0s) by Encode::getEncoding at line 119, avg 1µs/call
sub Encode::CORE:subst; # opcode
# spent 0s within Encode::LEAVE_SRC which was called: # once (0s+0s) by XSLoader::load at line 115 of XSLoader.pm
sub Encode::LEAVE_SRC; # xsub
# spent 4µs within Encode::STOP_AT_PARTIAL which was called: # once (4µs+0s) by XSLoader::load at line 115 of XSLoader.pm
sub Encode::STOP_AT_PARTIAL; # xsub
# spent 1µs within Encode::__ANON__ which was called: # once (1µs+0s) by Encode::BEGIN@54 at line 54
sub Encode::__ANON__; # xsub
# spent 61µs (38+23) within Encode::onBOOT which was called: # once (38µs+23µs) by OpenAPI::Modern::BEGIN@24 at line 174
sub Encode::onBOOT; # xsub
# spent 704ms (558+146) within Encode::utf8::decode which was called 186222 times, avg 4µs/call: # 185786 times (555ms+145ms) by Mojo::Util::decode at line 122 of Mojo/Util.pm, avg 4µs/call # 436 times (3.14ms+868µs) by YAML::PP::Reader::File::CORE:readline at line 75 of YAML/PP/Reader.pm, avg 9µs/call
sub Encode::utf8::decode; # xsub
# spent 608ms within Encode::utf8::encode which was called 829417 times, avg 733ns/call: # 829417 times (608ms+0s) by Mojo::Util::encode at line 133 of Mojo/Util.pm, avg 733ns/call
sub Encode::utf8::encode; # xsub