Have you rebuilt 5.1 HEAD today? Dmitry.
> -----Original Message----- > From: Edin Kadribasic [mailto:[EMAIL PROTECTED] > Sent: Monday, March 13, 2006 5:32 PM > To: Dmitry Stogov > Cc: 'Rasmus Lerdorf'; 'internals' > Subject: Re: [PHP-DEV] Calling performance geeks > > > 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 > > > -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php