Bug #49996 [Com]: DateTimeZone::getTransitions performance drop
Edit report at http://bugs.php.net/bug.php?id=49996&edit=1
ID: 49996
Comment by: rstein2000 at gmail dot com
Reported by: dor at videocells dot com
Summary: DateTimeZone::getTransitions performance drop
Status: No Feedback
Type: Bug
Package: Performance problem
Operating System: Centos 5.2 64 bit
PHP Version: 5.3.0
Assigned To: derick
Block user comment: N
New Comment:
I am experiencing the same issue.
The PHP is built through cPanel's easyapache script from your sources
and is
currently affecting PHP 5.3.3. Platform is CentOS.
Test code to replicate the issue:
<?php
$timezone = "UTC";
$tz = new DateTimeZone($timezone);
$tzarray = $tz->getTransitions();
?>
Just calling getTransitions(); is enough to trigger the regression.
Time tests
with and without that call:
With:
time php -q tztest.php
real 0m0.459s
user 0m0.404s
sys 0m0.054s
Without:
time php -q tztest.php
real 0m0.092s
user 0m0.023s
sys 0m0.068s
Previous Comments:
------------------------------------------------------------------------
[2010-02-18 01:00:00] php-bugs at lists dot php dot net
No feedback was provided for this bug for over a week, so it is
being suspended automatically. If you are able to provide the
information that was originally requested, please do so and change
the status of the bug back to "Open".
------------------------------------------------------------------------
[2010-02-10 16:57:41] derick@php.net
Are you using Centos' packages?
------------------------------------------------------------------------
[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?
------------------------------------------------------------------------
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/bug.php?id=49996
--
Edit this bug report at http://bugs.php.net/bug.php?id=49996&edit=1
Thread (8 messages)