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