Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:22492 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 71562 invoked by uid 1010); 17 Mar 2006 02:41:34 -0000 Delivered-To: ezmlm-scan-internals@lists.php.net Delivered-To: ezmlm-internals@lists.php.net Received: (qmail 71547 invoked from network); 17 Mar 2006 02:41:34 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 17 Mar 2006 02:41:34 -0000 X-Host-Fingerprint: 204.11.219.139 lerdorf.com Linux 2.4/2.6 Received: from ([204.11.219.139:54145] helo=colo.lerdorf.com) by pb1.pair.com (ecelerity 2.0 beta r(6323M)) with SMTP id BC/C2-55982-CD12A144 for ; Thu, 16 Mar 2006 21:41:32 -0500 Received: from [192.168.200.106] (c-24-6-5-134.hsd1.ca.comcast.net [24.6.5.134]) (authenticated bits=0) by colo.lerdorf.com (8.13.5/8.13.5/Debian-3) with ESMTP id k2H2fSjK009279 for ; Thu, 16 Mar 2006 18:41:29 -0800 Message-ID: <441A21D8.9020507@lerdorf.com> Date: Thu, 16 Mar 2006 18:41:28 -0800 User-Agent: Thunderbird 1.5 (Macintosh/20051201) MIME-Version: 1.0 To: internals Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Subject: Current numbers From: rasmus@lerdorf.com (Rasmus Lerdorf) 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