ID: 27215 Comment by: hagen at xiag dot ch Reported By: waboring at 3gstech dot com Status: Open Bug Type: Performance problem Operating System: Redhat 9 PHP Version: 5CVS-2004-02-10 (dev) New Comment:
The same thing on PHP5/Windows XP SP1. I think there's nothing to add to the things said above. PHP5 simply parses code too slow. The bug is extremely easy to reproduce – I’ve tried with different configurations and on different Apache/platform combinations – but it still there. You take any class put it to separate file then include it from another one and measure the time taken by include. The difference between php4 and php5 is up to 15-20 times. Previous Comments: ------------------------------------------------------------------------ [2004-03-23 17:44:26] waboring at 3gstech dot com Some more data points. I used apache bench to run the test.php script in my last post. I tested against php 4.3.2 and today's cvs php5. Here are the results. php4: Server Software: Apache/1.3.26 Server Hostname: phphtmllib.hemna.corp.qualys.com Server Port: 80 Document Path: /test.php Document Length: 34 bytes Concurrency Level: 1 Time taken for tests: 9.748 seconds Complete requests: 100 Failed requests: 0 Broken pipe errors: 0 Total transferred: 22900 bytes HTML transferred: 3400 bytes Requests per second: 10.26 [#/sec] (mean) Time per request: 97.48 [ms] (mean) php5: Server Software: Apache/1.3.26 Server Hostname: phphtmllib.hemna.corp.qualys.com Server Port: 80 Document Path: /test.php Document Length: 34 bytes Concurrency Level: 1 Time taken for tests: 39.551 seconds Complete requests: 100 Failed requests: 0 Broken pipe errors: 0 Total transferred: 24300 bytes HTML transferred: 3400 bytes Requests per second: 2.53 [#/sec] (mean) Time per request: 395.51 [ms] (mean) ------------------------------------------------------------------------ [2004-03-23 17:06:45] waboring at 3gstech dot com ok with further testing, I have trimmed my configure line down to the following. ./configure \ -with-apxs=/usr/local/apache/bin/apxs I then restart apache. First hit to the test script .097 s Second hit .187 s third .264 s .332 s .346 s .392 s (peaked out here) In each test, I wait a few seconds to make sure there is no load on the machine. I'm using a seperate machine to run the browser as to not polute the server response times. The entire php script. <?php $_time = explode(" ",microtime()); $start = $_time[1] + $_time[0]; $phphtmllib = "phphtmllib"; include_once( $phphtmllib."/includes.inc"); $_time = explode(" ", microtime()); $stop = $_time[1] + $_time[0]; $elapsed = substr($stop - $start, 0, 5); echo "<i>elapsed time: ".$elapsed." s </i><br>\n"; ?> ------------------------------------------------------------------------ [2004-02-11 15:05:48] [EMAIL PROTECTED] I have not noticed any performance problem with PHP 5, quite the opposite actually. Please provide information how you have configured PHP (what web server is used, are you running PHP5 as CGI or as a module, what configure line was used when compiling PHP, what possible extensions you load in php.ini if any, etc.) (isn't all this mentioned in the instructions about HOW to report???) ------------------------------------------------------------------------ [2004-02-11 14:00:22] waboring at 3gstech dot com I'm not sure what else you want me to provide. The bug is very clear. There is a big performance issue with php5 just including a file with a class in it. php4 does not show this problem. I have created a directory on my web server that shows the test code. http://phphtmllib.newsblob.com/bug/index.php This is running in an php4 environment and it takes 0.005s to execute the index.php code. I don't have php5 running on this machine, as it is a production box. You can look at the source code of the scripts by pointing to the following files. http://phphtmllib.newsblob.com/bug/index.phps http://phphtmllib.newsblob.com/bug/includes.phps http://phphtmllib.newsblob.com/bug/ContainerClass.phps http://phphtmllib.newsblob.com/bug/XMLTagClass.phps http://phphtmllib.newsblob.com/bug/HTMLTagClass.phps When I run this on my machine (Pentium 4 1.8Ghz 512M ram) php4: 0.005s php5: 0.100s ------------------------------------------------------------------------ [2004-02-10 20:19:37] waboring at 3gstech dot com Description: ------------ I am the maintainer of phphtmllib. I just got the latest php5 from cvs built and working, but have noticed a serious performance issue with just doing includes. reproduce: download phphtmllib from http://phphtmllib.newsblob.com/downloads/download.php?version=2.4.0 tar -zxvf phptmllib-2.4.0.tgz into your favorite location create a simple script that does nothing but include the library include file. "phphtmllib-2.4.0/include.inc" The execution of which takes over 1 second to complete. This script takes 0.075 to complete in php 4.3.2 Reproduce code: --------------- <?php $phphtmllib = "/location/where/you/installed/it"; include_once($phphtmlib."/includes.inc"); //Those 2 lines take over 1 second ?> Expected result: ---------------- expected the simple include script to return in under .1 ms Actual result: -------------- The script took over 1 second to execute. ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=27215&edit=1