ID: 41193
User updated by: mauroi at digbang dot com
Reported By: mauroi at digbang dot com
Status: Open
Bug Type: Performance problem
Operating System: Win32
PHP Version: 5.2.2RC2
New Comment:
Thanks Mark... The original example comes from a real life application,
but yours is far much better. Hope someone will take a look at it now
it's simpler.
Regards,
Mauro.
Previous Comments:
------------------------------------------------------------------------
[2007-05-09 15:36:37] mark at markwest dot me dot uk
I can reproduce what I believe to be the same issue too.
A very simple test case to highlight this issue is
<?php
for ($i = 0; $i < 5000; $i++) {
if (is_readable('test.txt')) {
// dummy - do nothing!
}
}
?>
Sample results, measured using xdebug, are as follows
is_readable with non-existent file
5.1.6 5000 calls to is_readable taking 166ms
5.2.2 5000 calls to is_readable taking 1511ms
is_readable with existing file
5.1.6 5000 calls to is_readable taking 135ms
5.2.2 5000 calls to is_readable taking 151ms
When the file isn't present php 5.2.x takes significantly longer that
in previous releases.
-Mark
------------------------------------------------------------------------
[2007-04-29 00:29:56] mauroi at digbang dot com
Also affects 5.2.2rc2
------------------------------------------------------------------------
[2007-04-25 21:56:14] mauroi at digbang dot com
Description:
------------
First of all, I couldn't reproduce this on Linux. Maybe because it
doesn't exist, or maybe because of worse perfomance on filesystem
operations on Windows.
We've found a performance degradation between PHP5.1.6 and PHP5.2.x
(also checked with PHP5.2.2rc1) when including a file with a relative
path. It gets notorious if using include_path and it has a big number of
directories.
In the provided zip file you'll find 8 directories. Only one of them
contains the file that will be required by the main script. So,
script.php & script1.php show the problem. script.php only requires the
file one time, and even in that case you'll see the difference.
script1.php iterates including a non-existant file (that's why errors ar
supressed) and the execution time is twice as big.
At first glance this could look as a bug with less importance, but any
framework that uses __autoload & include_path with some sort of
frequency, will be slower on PHP5.2 on Windows. Also, any site using MVC
(not even using __autoload) and relative paths could be affected.
Thank you very much.
Reproduce code:
---------------
http://webmail.digbang.com/include_performance.zip
# one inclusion
php -n script.php
# multiple inclusions
php -n script1.php
Expected result:
----------------
Same or better performance on PHP5.2.x than in PHP5.1.6
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=41193&edit=1