FAQ
We are getting there. With the recent patches from Andrei and Dmitry
here is what it looks like on this AMD test server of mine:

http://www.php.net/~rasmus/numbers.png

The MySQL test I added is just a simple select query using ext/mysql.
It looks like this: http://www.php.net/~rasmus/mysql.phps

The calltrees with a minimum node weight of 1.5% of the execution time
for 4.4.3 and current 5.1.3 for that MySQL script look like this:

http://www.php.net/~rasmus/php443.png

http://www.php.net/~rasmus/php513.png

The corresponding raw calltree files that you can load into kcachegrind are:

http://www.php.net/~rasmus/php443.out

http://www.php.net/~rasmus/php513.out

I reset the counters after server startup this time to get cleaner numbers.

Note that Andrei's latest patch eliminates ap_add_common_vars and
ap_add_cgi_vars that you see in the 443 tree adding up to exactly 9% of
the execution time there. Now in 513 that is replaced by
php_populate_subprocess_env which takes 1.91% which is where Andrei's 7%
speedup claim comes from. We should apply this to 4.4.3 as well.

The only other place I see potentially low-hanging fruit now is in
zend_ini_deactivate. It might be possible to short circuit that
function and have it only restore ini values we know have changed by
keeping track of that in zend_alter_ini_entry. 1.74% of the time spent
there, so perhaps not worth the effort.

Next up, magic compiler tricks to speed up the executor. But that will
take a while longer.

-Rasmus

Search Discussions

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
groupphp-internals @
categoriesphp
postedMar 17, '06 at 2:41a
activeMar 17, '06 at 2:41a
posts1
users1
websitephp.net

1 user in discussion

Rasmus Lerdorf: 1 post

People

Translate

site design / logo © 2022 Grokbase