Yes, fresh CVS update of 4.4, 5.1 and apc. Edin
Dmitry Stogov wrote: > 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