← Index
NYTProf Performance Profile   « line view »
For -e
  Run on Thu Jun 30 16:16:00 2016
Reported on Thu Jun 30 16:16:08 2016

Filename/home/s1/perl5/perlbrew/perls/perl-5.22.1/lib/site_perl/5.22.1/DateTime/Locale/FromData.pm
StatementsExecuted 138 statements in 2.00ms
Subroutines
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
111706µs830µsDateTime::Locale::FromData::::BEGIN@6DateTime::Locale::FromData::BEGIN@6
111152µs152µsDateTime::Locale::FromData::::BEGIN@13DateTime::Locale::FromData::BEGIN@13
11134µs34µsDateTime::Locale::FromData::::newDateTime::Locale::FromData::new
11132µs37µsDateTime::Locale::FromData::::BEGIN@3DateTime::Locale::FromData::BEGIN@3
11114µs39µsDateTime::Locale::FromData::::BEGIN@7DateTime::Locale::FromData::BEGIN@7
11112µs24µsDateTime::Locale::FromData::::BEGIN@4DateTime::Locale::FromData::BEGIN@4
1119µs26µsDateTime::Locale::FromData::::BEGIN@70DateTime::Locale::FromData::BEGIN@70
1118µs20µsDateTime::Locale::FromData::::BEGIN@89DateTime::Locale::FromData::BEGIN@89
0000s0sDateTime::Locale::FromData::::STORABLE_freezeDateTime::Locale::FromData::STORABLE_freeze
0000s0sDateTime::Locale::FromData::::STORABLE_thawDateTime::Locale::FromData::STORABLE_thaw
0000s0sDateTime::Locale::FromData::::__ANON__[:68]DateTime::Locale::FromData::__ANON__[:68]
0000s0sDateTime::Locale::FromData::::__ANON__[:86]DateTime::Locale::FromData::__ANON__[:86]
0000s0sDateTime::Locale::FromData::::_available_formatsDateTime::Locale::FromData::_available_formats
0000s0sDateTime::Locale::FromData::::_make_datetime_formatDateTime::Locale::FromData::_make_datetime_format
0000s0sDateTime::Locale::FromData::::available_formatsDateTime::Locale::FromData::available_formats
0000s0sDateTime::Locale::FromData::::date_format_defaultDateTime::Locale::FromData::date_format_default
0000s0sDateTime::Locale::FromData::::date_formatsDateTime::Locale::FromData::date_formats
0000s0sDateTime::Locale::FromData::::datetime_formatDateTime::Locale::FromData::datetime_format
0000s0sDateTime::Locale::FromData::::datetime_format_defaultDateTime::Locale::FromData::datetime_format_default
0000s0sDateTime::Locale::FromData::::format_forDateTime::Locale::FromData::format_for
0000s0sDateTime::Locale::FromData::::idDateTime::Locale::FromData::id
0000s0sDateTime::Locale::FromData::::language_codeDateTime::Locale::FromData::language_code
0000s0sDateTime::Locale::FromData::::language_idDateTime::Locale::FromData::language_id
0000s0sDateTime::Locale::FromData::::prefers_24_hour_timeDateTime::Locale::FromData::prefers_24_hour_time
0000s0sDateTime::Locale::FromData::::script_codeDateTime::Locale::FromData::script_code
0000s0sDateTime::Locale::FromData::::script_idDateTime::Locale::FromData::script_id
0000s0sDateTime::Locale::FromData::::set_default_date_format_lengthDateTime::Locale::FromData::set_default_date_format_length
0000s0sDateTime::Locale::FromData::::set_default_time_format_lengthDateTime::Locale::FromData::set_default_time_format_length
0000s0sDateTime::Locale::FromData::::territory_codeDateTime::Locale::FromData::territory_code
0000s0sDateTime::Locale::FromData::::territory_idDateTime::Locale::FromData::territory_id
0000s0sDateTime::Locale::FromData::::time_format_defaultDateTime::Locale::FromData::time_format_default
0000s0sDateTime::Locale::FromData::::time_formatsDateTime::Locale::FromData::time_formats
0000s0sDateTime::Locale::FromData::::variant_codeDateTime::Locale::FromData::variant_code
0000s0sDateTime::Locale::FromData::::variant_idDateTime::Locale::FromData::variant_id
Call graph for these subroutines as a Graphviz dot language file.
Line State
ments
Time
on line
Calls Time
in subs
Code
1package DateTime::Locale::FromData;
2
3241µs243µs
# spent 37µs (32+6) within DateTime::Locale::FromData::BEGIN@3 which was called: # once (32µs+6µs) by DateTime::Locale::BEGIN@11 at line 3
use strict;
# spent 37µs making 1 call to DateTime::Locale::FromData::BEGIN@3 # spent 6µs making 1 call to strict::import
4238µs235µs
# spent 24µs (12+11) within DateTime::Locale::FromData::BEGIN@4 which was called: # once (12µs+11µs) by DateTime::Locale::BEGIN@11 at line 4
use warnings;
# spent 24µs making 1 call to DateTime::Locale::FromData::BEGIN@4 # spent 11µs making 1 call to warnings::import
5
62396µs2886µs
# spent 830µs (706+125) within DateTime::Locale::FromData::BEGIN@6 which was called: # once (706µs+125µs) by DateTime::Locale::BEGIN@11 at line 6
use DateTime::Locale::Util qw( parse_locale_code );
# spent 830µs making 1 call to DateTime::Locale::FromData::BEGIN@6 # spent 56µs making 1 call to Exporter::import
72145µs265µs
# spent 39µs (14+26) within DateTime::Locale::FromData::BEGIN@7 which was called: # once (14µs+26µs) by DateTime::Locale::BEGIN@11 at line 7
use Params::Validate qw( validate_pos );
# spent 39µs making 1 call to DateTime::Locale::FromData::BEGIN@7 # spent 26µs making 1 call to Exporter::import
8
91600nsour $VERSION = '1.03';
10
111200nsmy @FormatLengths;
12
13
# spent 152µs within DateTime::Locale::FromData::BEGIN@13 which was called: # once (152µs+0s) by DateTime::Locale::BEGIN@11 at line 92
BEGIN {
1416µs my @methods = qw(
15 code
16 name
17 language
18 script
19 territory
20 variant
21 native_name
22 native_language
23 native_script
24 native_territory
25 native_variant
26 am_pm_abbreviated
27 date_format_full
28 date_format_long
29 date_format_medium
30 date_format_short
31 time_format_full
32 time_format_long
33 time_format_medium
34 time_format_short
35 day_format_abbreviated
36 day_format_narrow
37 day_format_wide
38 day_stand_alone_abbreviated
39 day_stand_alone_narrow
40 day_stand_alone_wide
41 month_format_abbreviated
42 month_format_narrow
43 month_format_wide
44 month_stand_alone_abbreviated
45 month_stand_alone_narrow
46 month_stand_alone_wide
47 quarter_format_abbreviated
48 quarter_format_narrow
49 quarter_format_wide
50 quarter_stand_alone_abbreviated
51 quarter_stand_alone_narrow
52 quarter_stand_alone_wide
53 era_abbreviated
54 era_narrow
55 era_wide
56 default_date_format_length
57 default_time_format_length
58 first_day_of_week
59 version
60 glibc_datetime_format
61 glibc_date_format
62 glibc_date_1_format
63 glibc_time_format
64 glibc_time_12_format
65 );
66
671600ns for my $meth (@methods) {
685046µs my $sub = sub { $_[0]->{$meth} };
69 ## no critic (TestingAndDebugging::ProhibitNoStrict)
702122µs242µs
# spent 26µs (9+16) within DateTime::Locale::FromData::BEGIN@70 which was called: # once (9µs+16µs) by DateTime::Locale::BEGIN@11 at line 70
no strict 'refs';
# spent 26µs making 1 call to DateTime::Locale::FromData::BEGIN@70 # spent 16µs making 1 call to strict::unimport
715078µs *{$meth} = $sub;
72 }
73
7411µs @FormatLengths = qw( short medium long full );
75
7616µs for my $length (@FormatLengths) {
7742µs my $meth = 'datetime_format_' . $length;
7842µs my $key = 'computed_' . $meth;
79
80 my $sub = sub {
81 my $self = shift;
82
83 return $self->{$key} if exists $self->{$key};
84
85 return $self->{$key} = $self->_make_datetime_format($length);
8644µs };
87
88 ## no critic (TestingAndDebugging::ProhibitNoStrict)
89243µs232µs
# spent 20µs (8+12) within DateTime::Locale::FromData::BEGIN@89 which was called: # once (8µs+12µs) by DateTime::Locale::BEGIN@11 at line 89
no strict 'refs';
# spent 20µs making 1 call to DateTime::Locale::FromData::BEGIN@89 # spent 12µs making 1 call to strict::unimport
9047µs *{$meth} = $sub;
91 }
9211.02ms1152µs}
# spent 152µs making 1 call to DateTime::Locale::FromData::BEGIN@13
93
94
# spent 34µs within DateTime::Locale::FromData::new which was called: # once (34µs+0s) by DateTime::Locale::_locale_object_for at line 282 of DateTime/Locale.pm
sub new {
951700ns my $class = shift;
961400ns my $data = shift;
97
98 return bless {
99136µs %{$data},
100 default_date_format_length => 'medium',
101 default_time_format_length => 'medium',
102 }, $class;
103}
104
105sub date_format_default {
106 return $_[0]->date_format_medium;
107}
108
109sub time_format_default {
110 return $_[0]->time_format_medium;
111}
112
113sub datetime_format {
114 return $_[0]->{datetime_format_medium};
115}
116
117sub datetime_format_default {
118 return $_[0]->datetime_format_medium;
119}
120
121sub _make_datetime_format {
122 my $self = shift;
123 my $length = shift;
124
125 my $dt_key = 'datetime_format_' . $length;
126 my $date_meth = 'date_format_' . $length;
127 my $time_meth = 'time_format_' . $length;
128
129 my $dt_format = $self->{$dt_key};
130 $dt_format =~ s/\{0\}/$self->$time_meth/eg;
131 $dt_format =~ s/\{1\}/$self->$date_meth/eg;
132
133 return $dt_format;
134}
135
136sub set_default_date_format_length {
137 my $self = shift;
138 my ($l)
139 = validate_pos( @_, { regex => qr/^(?:full|long|medium|short)$/i } );
140
141 $self->{default_date_format_length} = lc $l;
142}
143
144sub set_default_time_format_length {
145 my $self = shift;
146 my ($l)
147 = validate_pos( @_, { regex => qr/^(?:full|long|medium|short)/i } );
148
149 $self->{default_time_format_length} = lc $l;
150}
151
152sub date_formats {
153 my %formats;
154 for my $length (@FormatLengths) {
155 my $meth = 'date_format_' . $length;
156 $formats{$length} = $_[0]->$meth;
157 }
158 return \%formats;
159}
160
161sub time_formats {
162 my %formats;
163 for my $length (@FormatLengths) {
164 my $meth = 'time_format_' . $length;
165 $formats{$length} = $_[0]->$meth;
166 }
167 return \%formats;
168}
169
170sub available_formats {
171 my $self = shift;
172
173 $self->{computed_available_formats}
174 ||= [ sort keys %{ $self->_available_formats } ];
175
176 return @{ $self->{computed_available_formats} };
177}
178
179sub format_for {
180 my $self = shift;
181 my $for = shift;
182
183 return $self->_available_formats->{$for};
184}
185
186sub _available_formats { $_[0]->{available_formats} }
187
188sub prefers_24_hour_time {
189 my $self = shift;
190
191 return $self->{prefers_24_hour_time}
192 if exists $self->{prefers_24_hour_time};
193
194 $self->{prefers_24_hour_time} = $self->time_format_short =~ /h|K/ ? 0 : 1;
195}
196
197sub language_code {
198 my $self = shift;
199 return ( $self->{parsed_code} ||= { parse_locale_code( $self->code ) } )
200 ->{language};
201}
202
203sub script_code {
204 my $self = shift;
205 return ( $self->{parsed_code} ||= { parse_locale_code( $self->code ) } )
206 ->{script};
207}
208
209sub territory_code {
210 my $self = shift;
211 return ( $self->{parsed_code} ||= { parse_locale_code( $self->code ) } )
212 ->{territory};
213}
214
215sub variant_code {
216 my $self = shift;
217 return ( $self->{parsed_code} ||= { parse_locale_code( $self->code ) } )
218 ->{variant};
219}
220
221sub id {
222 $_[0]->code;
223}
224
225sub language_id {
226 $_[0]->language_code;
227}
228
229sub script_id {
230 $_[0]->script_code;
231}
232
233sub territory_id {
234 $_[0]->territory_code;
235}
236
237sub variant_id {
238 $_[0]->variant_code;
239}
240
241sub STORABLE_freeze {
242 my $self = shift;
243 my $cloning = shift;
244
245 return if $cloning;
246
247 return $self->code;
248}
249
250sub STORABLE_thaw {
251 my $self = shift;
252 shift;
253 my $serialized = shift;
254
255 my $obj = DateTime::Locale->load($serialized);
256
257 %{$self} = %{$obj};
258
259 return $self;
260}
261
26214µs1;
263
264# ABSTRACT: Class for locale objects instantiated from pre-defined data
265
266__END__