#49996 [Asn->Fbk]: DateTimeZone::getTransitions performance drop
| From: | derick@php.net | Date: | Wed, 10 Feb 2010 16:57:41 +0000 |
| Subject: | #49996 [Asn->Fbk]: DateTimeZone::getTransitions performance drop | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-147402@lists.php.net to get a copy of this message | ||
ID: 49996
Updated by: derick@php.net
Reported By: dor at videocells dot com
-Status: Assigned
+Status: Feedback
Bug Type: Performance problem
Operating System: Centos 5.2 64 bit
PHP Version: 5.3.0
Assigned To: derick
New Comment:
Are you using Centos' packages?
Previous Comments:
------------------------------------------------------------------------
[2009-10-28 07:52:30] derick@php.net
It's indeed quite a bit slower... not sure if this is a *bug* though,
but will check it out.
------------------------------------------------------------------------
[2009-10-28 06:56:30] dor at videocells dot com
I have two exact computers in terms of OS installation and apache/php
configuration (except the php 5.3 against php 5.2.9)
the average speed this function takes to run in php 5.2.9 is :
float(0.015974044799805) float(0.0457763671875)
float(0.045061111450195) float(0.65398216247559) float(0.92506408691406)
float(0.70810317993164) float(0.19216537475586) float(0.32210350036621)
float(0.73885917663574) float(0.16283988952637) float(0.94914436340332)
float(0.62394142150879) float(0.25200843811035)....
while on php 5.3 its :
float(63.025951385498) float(62.762022018433) float(62.709093093872)
float(63.004970550537) float(63.482046127319) float(63.012838363647)
float(62.775135040283) float(62.896966934204) float(63.131093978882)
float(63.91716003418) float(63.18211555481) ....
its 60 times slower.
can i somehow send a print screen, or attach the printouts of both
computer's phpinfo() ?
------------------------------------------------------------------------
[2009-10-27 22:27:17] jani@php.net
With this simplified and working (!) script I get exactly same results
with PHP_5_2, PHP_5_3 and HEAD of today:
<?php
$timezoneArray = array (
"(GMT -12:00) International Date Line West" => "Etc/GMT+12",
"(GMT -11:00) Midway Island, Samoa" => "Pacific/Midway",
"(GMT -10:00) Hawaii" => "US/Hawaii",
// many many more time zones...
"(GMT +12:00) Auckland, Wellington" => "Pacific/Auckland",
"(GMT +12:00) Fiji, Kamchatka, Marshall Is." => "Asia/Kamchatka",
"(GMT +13:00) Nuku'alofa" => "Pacific/Tongatapu");
foreach ($timezoneArray as $TimezoneDescription => $TimezoneID)
{
$res = timezone_open($TimezoneID);
if($res)
{
$start = microtime(true);
$trans = $res->getTransitions();
$end = microtime(true);
var_dump(1000 * ($end - $start));
}
}
?>
Now, where is the performance issue here?
------------------------------------------------------------------------
[2009-10-27 06:55:10] dor at videocells dot com
<?php
$timezoneArray = array (
"(GMT -12:00) International Date Line West" => "Etc/GMT+12",
"(GMT -11:00) Midway Island, Samoa" => "Pacific/Midway",
"(GMT -10:00) Hawaii" => "US/Hawaii",
// many many more time zones...
"(GMT +12:00) Auckland, Wellington" => "Pacific/Auckland",
"(GMT +12:00) Fiji, Kamchatka, Marshall Is." => "Asia/Kamchatka",
"(GMT +13:00) Nuku'alofa" => "Pacific/Tongatapu");
foreach ($timezoneArray as $TimezoneDescription => $TimezoneID)
{
$res = timezone_open($TimezoneID)
if($res)
{
$TimeInTimezone = new DateTime ("now",$res)
$microParts = explode(" ",microtime());
list($a,$b) = explode(".",$microParts[0]);
echo "before : ".strftime('%Y%m%d-%H%M%S',time()).".".$b;
//the following line takes alot of time :
$trans = $res->getTransitions();
$microParts_2 = explode(" ",microtime());
list($c,$d) = explode(".",$microParts_2[0]);
echo "before : ".strftime('%Y%m%d-%H%M%S',time()).".".$d; }
}
------------------------------------------------------------------------
[2009-10-26 22:49:11] jani@php.net
Thank you for this bug report. To properly diagnose the problem, we
need a short but complete example script to be able to reproduce
this bug ourselves.
A proper reproducing script starts with <?php and ends with ?>,
is max. 10-20 lines long and does not require any external
resources such as databases, etc. If the script requires a
database to demonstrate the issue, please make sure it creates
all necessary tables, stored procedures etc.
Please avoid embedding huge scripts into the report.
And preferrably such which does not have several syntax errors and
missing parts..
------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
http://bugs.php.net/49996
--
Edit this bug report at http://bugs.php.net/?id=49996&edit=1