Bug #49996 [Com]: DateTimeZone::getTransitions performance drop

From: Date: Wed, 20 Oct 2010 02:01:36 +0000
Subject: Bug #49996 [Com]: DateTimeZone::getTransitions performance drop
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-155351@lists.php.net to get a copy of this message
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)

« previous php.bugs (#155351) next »