Hi Dmitry.
is this improvemnt (intruction reduce and memory read reduce) preserved under  
"strong" compiler optimization (-O2, -O3) ?
is it something that the compiler can not automatically optimize ?
anyhow, the patch seems impressive...

On Monday, December 03, 2012 11:35:52 AM Dmitry Stogov wrote:
> 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 <dmi...@zend.com> 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 
<ras...@lerdorf.com>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

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

Reply via email to