Hello Dmitry,

  if you mean the hash stuff you changed then you did quite some mistakes.
Because the normal apply functions don't respect the ZEND_HASH_* consts as
i mailed last week.

marcus

Monday, March 13, 2006, 1:12:01 PM, you 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
>> 
>> 
>> 




Best regards,
 Marcus

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

Reply via email to