Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:64135 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 81302 invoked from network); 3 Dec 2012 09:35:56 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 3 Dec 2012 09:35:56 -0000 Authentication-Results: pb1.pair.com smtp.mail=dmitry@zend.com; spf=unknown; sender-id=unknown Authentication-Results: pb1.pair.com header.from=dmitry@zend.com; sender-id=unknown Received-SPF: unknown (pb1.pair.com: domain zend.com does not designate 209.85.216.170 as permitted sender) X-PHP-List-Original-Sender: dmitry@zend.com X-Host-Fingerprint: 209.85.216.170 mail-qc0-f170.google.com Received: from [209.85.216.170] ([209.85.216.170:64260] helo=mail-qc0-f170.google.com) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id CC/21-03565-B727CB05 for ; Mon, 03 Dec 2012 04:35:56 -0500 Received: by mail-qc0-f170.google.com with SMTP id d42so1564336qca.29 for ; Mon, 03 Dec 2012 01:35:52 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:x-gm-message-state; bh=NAnNLDqqcyrD5hRMe3UVjmcdXAbZ1XCOaW1mLg5DIRU=; b=Oik7EndMqc5kxemSrnKq6vDXy/VHeVwrg2sDUG0Nd0NfXaOSzNGh/qy1oa3UA3c0rR 0mSG6tyUUQmlLZluFBvS8CS+QK3fMPr+e5fvu2fMW6u9dsGgIBJH4xoNsq5Fgtu//Ju2 Bt1b3QCKJbFPCpZWE7HKt2FjuGbK6Fr8rB6Lf9AwESF0ESwp1/BEc4sXzE/JtpuBvI6a 3OCDdqT1tvsBFkFBwSCacQ4Rme2SPyuxFkUee5HhsMZYP4outkQ2rluJSmE7/DWHGLZz Z2dD64aYskN0gEAnhsXWWPImKLtb1XIf4LpxrCAZfKmuZE6jLAGtTDx/B4DZX1M47zbo t/rg== MIME-Version: 1.0 Received: by 10.224.185.79 with SMTP id cn15mr16210282qab.14.1354527352684; Mon, 03 Dec 2012 01:35:52 -0800 (PST) Received: by 10.49.74.133 with HTTP; Mon, 3 Dec 2012 01:35:52 -0800 (PST) In-Reply-To: References: <50B90DA4.606@lerdorf.com> Date: Mon, 3 Dec 2012 12:35:52 +0300 Message-ID: To: Rasmus Lerdorf Cc: Derick , jpauli@php.net, Yoram Bar Haim , PHP Internals Content-Type: multipart/alternative; boundary=20cf302ef99cb201e004cfef790f X-Gm-Message-State: ALoCoQlR312t0AdrzwdRn6gnVvfWIvPXdFy7/+81Lbft4YRj3un4KfXHUtHmEFEXwW9xIs2h5vzyL1MyPoQrNvLwIjWIDsis5XauwQeHRgPFj83YC/YyXSBXUrgVBsaiP+5+a2wVSd6k Subject: Re: [PHP-DEV] execute_data->Ts removing From: dmitry@zend.com (Dmitry Stogov) --20cf302ef99cb201e004cfef790f Content-Type: text/plain; charset=UTF-8 The new proposed patch: http://pastebin.com/pj5fQTfN Now both execute_data->Ts and execute_data->CVs are removed and corresponding temporary and compiled variables accessed using "execute_data" as the base pointer. Temporary variables allocate directly before the "execute_data" in reverse order and compiled variables right after. So they can be accessed without any additional computations. The patch reduces the number of executed instructions and number of memory reads (about 8% less). I'm going to commit the patch on Tuesday. Thanks. Dmitry. On Mon, Dec 3, 2012 at 9:47 AM, Dmitry Stogov wrote: > Hi Rasmus, > > I'm glad the patch is not a big problem for APC. > BTW: I decided not to commit the patch as is, and implement the similar > optimization for CVs first. > Otherwise I may need to change the way TMP_VAR accessed twice. > I'll probably send the patch for review later today. > > Thanks. Dmitry. > > On Fri, Nov 30, 2012 at 11:48 PM, Rasmus Lerdorf wrote: > >> On 11/30/2012 09:15 AM, Dmitry Stogov wrote: >> > Hi, >> > >> > The NEWS and UPGRADING explains the details. >> > >> > http://pastebin.com/VC71Y8LV >> > >> > The patch is big, but actually quite simple. >> > I'm going to commit it on Monday or Tuesday (if no objections). >> > >> > I'm going to look into the similar optimization for CVs, but it's going >> to >> > be a bit more difficult. >> >> Looks good to me. I'll commit this change to APC when you commit it: >> >> Index: apc_zend.c >> =================================================================== >> --- apc_zend.c (revision 328577) >> +++ apc_zend.c (working copy) >> @@ -48,7 +48,11 @@ >> static opcode_handler_t *apc_original_opcode_handlers; >> static opcode_handler_t apc_opcode_handlers[APC_OPCODE_HANDLER_COUNT]; >> >> +#if PHP_MAJOR_VERSION >= 6 || PHP_MAJOR_VERSION == 5 && >> PHP_MINOR_VERSION >= 5 >> +#define APC_EX_T(offset) (*EX_TMP_VAR(execute_data, >> offset)) >> +#else >> #define APC_EX_T(offset) (*(temp_variable >> *)((char*)execute_data->Ts + offset)) >> +#endif >> >> And there are a couple of extensions that are going to need similar >> changes because of this. pecl/optimizer, pecl/inclued, pecl/xhprof, >> pecl/operator and xdebug from a quick check. >> >> -Rasmus >> > > --20cf302ef99cb201e004cfef790f--