← Index
NYTProf Performance Profile   « line view »
For svc/members/upsert
  Run on Tue Jan 13 11:50:22 2015
Reported on Tue Jan 13 12:09:47 2015

Filename/usr/lib/x86_64-linux-gnu/perl5/5.20/Date/Calc/XS.pm
StatementsExecuted 17 statements in 2.69ms
Subroutines
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
1111.74ms1.89msDate::Calc::XS::::BEGIN@18Date::Calc::XS::BEGIN@18
111730µs730µsDate::Calc::XS::::BEGIN@14Date::Calc::XS::BEGIN@14
11186µs86µsDate::Calc::XS::::bootstrapDate::Calc::XS::bootstrap (xsub)
1116µs16µsDate::Calc::XS::::BEGIN@15Date::Calc::XS::BEGIN@15
1116µs49µsDate::Calc::XS::::BEGIN@16Date::Calc::XS::BEGIN@16
0000s0sDate::Calc::XS::::Decode_Date_EU2Date::Calc::XS::Decode_Date_EU2
0000s0sDate::Calc::XS::::Decode_Date_US2Date::Calc::XS::Decode_Date_US2
0000s0sDate::Calc::XS::::Parse_DateDate::Calc::XS::Parse_Date
Call graph for these subroutines as a Graphviz dot language file.
Line State
ments
Time
on line
Calls Time
in subs
Code
1
2###############################################################################
3## ##
4## Copyright (c) 1995 - 2012 by Steffen Beyer. ##
5## All rights reserved. ##
6## ##
7## This package is free software; you can redistribute it ##
8## and/or modify it under the same terms as Perl itself. ##
9## ##
10###############################################################################
11
12package Date::Calc::XS;
13
142744µs1730µs
# spent 730µs within Date::Calc::XS::BEGIN@14 which was called: # once (730µs+0s) by Date::Calc::BEGIN@18 at line 14
BEGIN { eval { require bytes; }; }
# spent 730µs making 1 call to Date::Calc::XS::BEGIN@14
15223µs225µs
# spent 16µs (6+10) within Date::Calc::XS::BEGIN@15 which was called: # once (6µs+10µs) by Date::Calc::BEGIN@18 at line 15
use strict;
# spent 16µs making 1 call to Date::Calc::XS::BEGIN@15 # spent 10µs making 1 call to strict::import
16224µs293µs
# spent 49µs (6+44) within Date::Calc::XS::BEGIN@16 which was called: # once (6µs+44µs) by Date::Calc::BEGIN@18 at line 16
use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $VERSION);
# spent 49µs making 1 call to Date::Calc::XS::BEGIN@16 # spent 44µs making 1 call to vars::import
17
1821.87ms21.95ms
# spent 1.89ms (1.74+151µs) within Date::Calc::XS::BEGIN@18 which was called: # once (1.74ms+151µs) by Date::Calc::BEGIN@18 at line 18
use Carp::Clan qw(^Date::);
# spent 1.89ms making 1 call to Date::Calc::XS::BEGIN@18 # spent 62µs making 1 call to Carp::Clan::import
19
201600nsrequire Exporter;
211300nsrequire DynaLoader;
22
2318µs@ISA = qw(Exporter DynaLoader);
24
251200ns@EXPORT = qw();
26
2714µs@EXPORT_OK = qw(
28 Days_in_Year
29 Days_in_Month
30 Weeks_in_Year
31 leap_year
32 check_date
33 check_time
34 check_business_date
35 Day_of_Year
36 Date_to_Days
37 Day_of_Week
38 Week_Number
39 Week_of_Year
40 Monday_of_Week
41 Nth_Weekday_of_Month_Year
42 Standard_to_Business
43 Business_to_Standard
44 Delta_Days
45 Delta_DHMS
46 Delta_YMD
47 Delta_YMDHMS
48 N_Delta_YMD
49 N_Delta_YMDHMS
50 Normalize_DHMS
51 Add_Delta_Days
52 Add_Delta_DHMS
53 Add_Delta_YM
54 Add_Delta_YMD
55 Add_Delta_YMDHMS
56 Add_N_Delta_YMD
57 Add_N_Delta_YMDHMS
58 System_Clock
59 Today
60 Now
61 Today_and_Now
62 This_Year
63 Gmtime
64 Localtime
65 Mktime
66 Timezone
67 Date_to_Time
68 Time_to_Date
69 Easter_Sunday
70 Decode_Month
71 Decode_Day_of_Week
72 Decode_Language
73 Decode_Date_EU
74 Decode_Date_US
75 Fixed_Window
76 Moving_Window
77 Compress
78 Uncompress
79 check_compressed
80 Compressed_to_Text
81 Date_to_Text
82 Date_to_Text_Long
83 English_Ordinal
84 Calendar
85 Month_to_Text
86 Day_of_Week_to_Text
87 Day_of_Week_Abbreviation
88 Language_to_Text
89 Language
90 Languages
91 Decode_Date_EU2
92 Decode_Date_US2
93 Parse_Date
94 ISO_LC
95 ISO_UC
96);
97
9816µs%EXPORT_TAGS = (all => [@EXPORT_OK]);
99
100##################################################
101## ##
102## "Version()" is available but not exported ##
103## in order to avoid possible name clashes. ##
104## Call "Date::Calc::XS::Version()" instead! ##
105## ##
106##################################################
107
1081200ns$VERSION = '6.3';
109
11018µs1560µsbootstrap Date::Calc::XS $VERSION;
# spent 560µs making 1 call to DynaLoader::bootstrap
111
112sub Decode_Date_EU2
113{
114 croak "Usage: (\$year,\$month,\$day) = Decode_Date_EU2(\$date[,\$lang]);\n" unless ((@_ == 1) or (@_ == 2));
115
116 my($buffer) = shift;
117 my($lang) = shift || 0;
118 my($year,$month,$day,$length);
119
120 $lang = Language() unless (($lang >= 1) and ($lang <= Languages()));
121 if ($buffer =~ /^\D* (\d+) [^A-Za-z0-9\xC0-\xD6\xD8-\xF6\xF8-\xFF]* ([A-Za-z\xC0-\xD6\xD8-\xF6\xF8-\xFF]+) [^A-Za-z0-9\xC0-\xD6\xD8-\xF6\xF8-\xFF]* (\d+) \D*$/x)
122 {
123 ($day,$month,$year) = ($1,$2,$3);
124 $month = Decode_Month($month,$lang);
125 unless ($month > 0)
126 {
127 return(); # can't decode month!
128 }
129 }
130 elsif ($buffer =~ /^\D* 0*(\d+) \D*$/x)
131 {
132 $buffer = $1;
133 $length = length($buffer);
134 if ($length == 3)
135 {
136 $day = substr($buffer,0,1);
137 $month = substr($buffer,1,1);
138 $year = substr($buffer,2,1);
139 }
140 elsif ($length == 4)
141 {
142 $day = substr($buffer,0,1);
143 $month = substr($buffer,1,1);
144 $year = substr($buffer,2,2);
145 }
146 elsif ($length == 5)
147 {
148 $day = substr($buffer,0,1);
149 $month = substr($buffer,1,2);
150 $year = substr($buffer,3,2);
151 }
152 elsif ($length == 6)
153 {
154 $day = substr($buffer,0,2);
155 $month = substr($buffer,2,2);
156 $year = substr($buffer,4,2);
157 }
158 elsif ($length == 7)
159 {
160 $day = substr($buffer,0,1);
161 $month = substr($buffer,1,2);
162 $year = substr($buffer,3,4);
163 }
164 elsif ($length == 8)
165 {
166 $day = substr($buffer,0,2);
167 $month = substr($buffer,2,2);
168 $year = substr($buffer,4,4);
169 }
170 else { return(); } # wrong number of digits!
171 }
172 elsif ($buffer =~ /^\D* (\d+) \D+ (\d+) \D+ (\d+) \D*$/x)
173 {
174 ($day,$month,$year) = ($1,$2,$3);
175 }
176 else { return(); } # no match at all!
177 $year = Moving_Window($year);
178 if (check_date($year,$month,$day))
179 {
180 return($year,$month,$day);
181 }
182 else { return(); } # not a valid date!
183}
184
185sub Decode_Date_US2
186{
187 croak "Usage: (\$year,\$month,\$day) = Decode_Date_US2(\$date[,\$lang]);\n" unless ((@_ == 1) or (@_ == 2));
188
189 my($buffer) = shift;
190 my($lang) = shift || 0;
191 my($year,$month,$day,$length);
192
193 $lang = Language() unless (($lang >= 1) and ($lang <= Languages()));
194 if ($buffer =~ /^[^A-Za-z0-9\xC0-\xD6\xD8-\xF6\xF8-\xFF]* ([A-Za-z\xC0-\xD6\xD8-\xF6\xF8-\xFF]+) [^A-Za-z0-9\xC0-\xD6\xD8-\xF6\xF8-\xFF]* 0*(\d+) \D*$/x)
195 {
196 ($month,$buffer) = ($1,$2);
197 $month = Decode_Month($month,$lang);
198 unless ($month > 0)
199 {
200 return(); # can't decode month!
201 }
202 $length = length($buffer);
203 if ($length == 2)
204 {
205 $day = substr($buffer,0,1);
206 $year = substr($buffer,1,1);
207 }
208 elsif ($length == 3)
209 {
210 $day = substr($buffer,0,1);
211 $year = substr($buffer,1,2);
212 }
213 elsif ($length == 4)
214 {
215 $day = substr($buffer,0,2);
216 $year = substr($buffer,2,2);
217 }
218 elsif ($length == 5)
219 {
220 $day = substr($buffer,0,1);
221 $year = substr($buffer,1,4);
222 }
223 elsif ($length == 6)
224 {
225 $day = substr($buffer,0,2);
226 $year = substr($buffer,2,4);
227 }
228 else { return(); } # wrong number of digits!
229 }
230 elsif ($buffer =~ /^[^A-Za-z0-9\xC0-\xD6\xD8-\xF6\xF8-\xFF]* ([A-Za-z\xC0-\xD6\xD8-\xF6\xF8-\xFF]+) [^A-Za-z0-9\xC0-\xD6\xD8-\xF6\xF8-\xFF]* (\d+) \D+ (\d+) \D*$/x)
231 {
232 ($month,$day,$year) = ($1,$2,$3);
233 $month = Decode_Month($month,$lang);
234 unless ($month > 0)
235 {
236 return(); # can't decode month!
237 }
238 }
239 elsif ($buffer =~ /^\D* 0*(\d+) \D*$/x)
240 {
241 $buffer = $1;
242 $length = length($buffer);
243 if ($length == 3)
244 {
245 $month = substr($buffer,0,1);
246 $day = substr($buffer,1,1);
247 $year = substr($buffer,2,1);
248 }
249 elsif ($length == 4)
250 {
251 $month = substr($buffer,0,1);
252 $day = substr($buffer,1,1);
253 $year = substr($buffer,2,2);
254 }
255 elsif ($length == 5)
256 {
257 $month = substr($buffer,0,1);
258 $day = substr($buffer,1,2);
259 $year = substr($buffer,3,2);
260 }
261 elsif ($length == 6)
262 {
263 $month = substr($buffer,0,2);
264 $day = substr($buffer,2,2);
265 $year = substr($buffer,4,2);
266 }
267 elsif ($length == 7)
268 {
269 $month = substr($buffer,0,1);
270 $day = substr($buffer,1,2);
271 $year = substr($buffer,3,4);
272 }
273 elsif ($length == 8)
274 {
275 $month = substr($buffer,0,2);
276 $day = substr($buffer,2,2);
277 $year = substr($buffer,4,4);
278 }
279 else { return(); } # wrong number of digits!
280 }
281 elsif ($buffer =~ /^\D* (\d+) \D+ (\d+) \D+ (\d+) \D*$/x)
282 {
283 ($month,$day,$year) = ($1,$2,$3);
284 }
285 else { return(); } # no match at all!
286 $year = Moving_Window($year);
287 if (check_date($year,$month,$day))
288 {
289 return($year,$month,$day);
290 }
291 else { return(); } # not a valid date!
292}
293
294sub Parse_Date
295{
296 croak "Usage: (\$year,\$month,\$day) = Parse_Date(\$date[,\$lang]);\n" unless ((@_ == 1) or (@_ == 2));
297
298 my($date) = shift;
299 my($lang) = shift || 0;
300 my($year,$month,$day);
301
302 $lang = Language() unless (($lang >= 1) and ($lang <= Languages()));
303 unless ($date =~ /\b([\x41-\x5A\x61-\x7A\xC0-\xD6\xD8-\xF6\xF8-\xFF]{3})\s+([0123]??\d)\b/)
304 {
305 return();
306 }
307 $month = $1;
308 $day = $2;
309 unless ($date =~ /\b(19\d\d|20\d\d)\b/)
310 {
311 return();
312 }
313 $year = $1;
314 $month = Decode_Month($month,$lang);
315 unless ($month > 0)
316 {
317 return();
318 }
319 unless (check_date($year,$month,$day))
320 {
321 return();
322 }
323 return($year,$month,$day);
324}
325
32617µs1;
327
328__END__
 
# spent 86µs within Date::Calc::XS::bootstrap which was called: # once (86µs+0s) by DynaLoader::bootstrap at line 210 of DynaLoader.pm
sub Date::Calc::XS::bootstrap; # xsub