I also see very little difference (in favor of php4) on my test box
(Dual Xeon 3.2GHz, running Linux 2.6.12 Fedora Core 3):

php-5.1 (top.php)
plain 3723 req/sec
apc stat=1 6220 req/sec
apc stat=0 6278 req/sec

php-4.4 (4top.php)
plain 3978 req/sec
apc stat=1 6421 req/sec
apc stat=0 6650 req/sec

php-5.1 (top10.php)
plain 1680 req/sec
apc stat=1 3605 req/sec
apc stat=0 3880 req/sec

php-4.4 (4top10.php)
plain 1731 req/sec
apc stat=1 3614 req/sec
apc stat=0 3922 req/sec

Edin

Dmitry Stogov wrote:
> Hi Rasmus,
> 
> I made two improvements in 5.1 and run the same bechmarks on Intel Pentium M
> 1.5GHz 2M cache.
> 
> top/top5/top10
>               
> php-5.1               740     550     430 req/sec
> php-4.4               680     440     290 req/sec
> 
> May be the problem is AMD chip? :)
> 
> Thanks. Dmitry.
> 
> 
>>-----Original Message-----
>>From: Rasmus Lerdorf [mailto:[EMAIL PROTECTED] 
>>Sent: Monday, March 13, 2006 7:34 AM
>>To: internals
>>Subject: [PHP-DEV] Calling performance geeks
>>
>>
>>We have a bit of a performance disconnect between 4.4 and 5.1 
>>still.  I 
>>was doing some benchmarking today just as a sanity check on some APC 
>>work I have been doing lately and came up with this:
>>
>>   http://lerdorf.com/php/bm.html
>>
>>You can ignore the apc/eaccelerator stuff.  Those numbers are not 
>>surprising.  The surprising number to me is how much faster 
>>4.4 still is.
>>
>>The graph labels are slightly off.  The 0, 5 and 10 includes should 
>>really be 1, 6 and 11.  The actual benchmark code is here:
>>
>>   http://www.php.net/~rasmus/bm.tar.gz
>>
>>Tested on a Linux 2.6 Ubuntu box on an AMD chip (syscalls are cheap 
>>there) with current PHP_4_4 and PHP_5_1 checkouts.  Was also testing 
>>5.1.2 to see the effect of getting rid of that uncached realpath call.
>>
>>As far as I can tell auto_globals_jit isn't working at all, but I 
>>eliminated that by doing variables_order = GP for these benchmarks. 
>>Even so, the request_startup is significantly more expensive in 5.1.
>>
>>Here are callgrind dumps for each.  Load them up with kcachegrind and 
>>browse around:
>>
>>PHP 4.4  http://www.php.net/~rasmus/callgrind.out.1528.gz
>>PHP 5.1  http://www.php.net/~rasmus/callgrind.out.1488.gz
>>
>>Each of these is 1000 requests against the top.php and 
>>4top.php scripts. 
>>  from bm.tar.gz.  If you start at the
>>
>>The script is trivial and looks like this:
>>
>><html>
>><?php
>>$base_dir = '/var/www/bm/';
>>include $base_dir . 'config.inc';
>>
>>function top_func($arg) {
>>   $b = $arg.$arg;
>>   echo $b;
>>}
>>class top_class {
>>   private $prop;
>>   function __construct($arg) {
>>     $this->prop = $arg;
>>   }
>>   function getProp() {
>>     return $this->prop;
>>   }
>>   function setProp($arg) {
>>     $this->prop = strtolower($arg);
>>   }
>>}
>>
>>top_func('foo');
>>$a = new top_class('bar');
>>echo $a->getProp();
>>$a->setProp("AbCdEfG");
>>echo $a->getProp();
>>echo <<<EOB
>>The database is {$config['db']}
>>and the user is {$config['db_user']}
>>
>>EOB;
>>?>
>></html>
>>
>>and config.inc is:
>>
>><?php
>>$config = array(
>>   'db'      => 'mysql',
>>   'db_user' => 'www',
>>   'db_pwd'  => 'foobar',
>>   'config1' => 123,
>>   'config2' => 456,
>>   'config3' => 789,
>>   'sub1'    => array(1,2,3,4,5,6,7,8,9,10),
>>   'sub2'    => 
>>array("abc","def","ghi","jkl","mno","pqr","stu","vwx","yz")
>>);
>>?>
>>
>>4top.php is identical except for the class definition being 
>>PHP 4-style 
>>instead.  As in no private and a PHP 4 constructor.  Otherwise it is 
>>identical.
>>
>>I have some ideas for things we can speed up in 5.1.  Like, 
>>for example, 
>>we should add the ap_add_common_vars() and ap_add_cgi_vars() 
>>to the jit 
>>mechanism.  There isn't much point filling these in unless the script 
>>tries to get them.  the ap_add_common_vars() call is 
>>extremely expensive 
>>since it does a qsort with a comparison function that uses 
>>strcasecmp. 
>>Of course, this same optimization can be done in 4.4.
>>
>>If you know your way around kcachegrind, load up the two 
>>callgrind files 
>>and see what stands out for you.  As far as I can tell, while 
>>we can do 
>>some tricks to speed up various helper bits, the slowdown is 
>>coming from 
>>the executor trashing its cache lines.
>>
>>-Rasmus
>>
>>-- 
>>PHP Internals - PHP Runtime Development Mailing List
>>To unsubscribe, visit: http://www.php.net/unsub.php
>>
>>
>>
> 
> 

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to