2013/4/10 Florin Patan <florinpa...@gmail.com>

> >On Wed, Apr 10, 2013 at 4:07 PM, Arvids Godjuks <arvids.godj...@gmail.com>
> wrote:
> > 2013/4/10 Dmitry Stogov <dmi...@zend.com>
> >
> >> Hi,
> >>
> >> Recently, I've found that OPcache optimizer misses a lot of abilities,
> >> because it handles only one op_array at once. So it definitely can't
> >> perform any inter-function optimizations (e.g. inlining).
> >>
> >> Actually, it was not very difficult to switch to "script at once"
> approach.
> >> The attached patch demonstrates it and adds per script constants
> >> substitution explained in the following script
> >>
> >> <?php
> >> define("FOO", 1);
> >> function foo() {
> >>     echo FOO . "\n"; // optimizer will replace it with: echo "1\n";
> >> }
> >> ?>
> >>
> >> Of course, I ran the PHP test suite and it passed all the same tests.
> >> Personally, I think it's safe to include this patch into 5.5 and make a
> >> green light to some other advanced optimizations in 5.5. (e.g.
> conversion
> >> INIT_FCALL_BY_NAME into DO_FCALL).
> >>
> >> Any thoughts?
> >>
> >> Thanks. Dmitry.
> >>
> >> --
> >> PHP Internals - PHP Runtime Development Mailing List
> >> To unsubscribe, visit: http://www.php.net/unsub.php
> >>
> >
> >
> > Hi!
> >
> > Many obvious optimizations are not used due to the fact, that script
> > translation into opcode state has to be fast. The nature of PHP dictated
> > that and this was re-iterated countless times on this mailing list by the
> > core developers.
> >
> > To do advanced stuff, you have to create some sort of pre-compile or
> > storing that compiled code reliably on disk so that if memory cache is
> > dropped or restart is done, there is no significant preformance hit while
> > all the code compiles into optimized opcode again.
> >
> > I would also imagine that good part of the optimizations would require
> > multiple files to be processed and optimized, but due to dynamic nature
> of
> > the PHP opcode compilation is done on per-file basis, so do the
> > optimizations.
> >
> > It's very commendable that you want to push optimizations and stuff, but
> > there are some fundamental stuff that needs to be cared of to do some
> > really good stuff.
> >
> > My 0.02$
>
> Hello,
>
>
> If applying optimizations in multiple passes would be a problem for
> speed, especially on the first request, then maybe a way to solve this
> would be to have a configurable variable like: opcache.passes which is
> between 1 and 10 (lets say) and then have the engine do something like
> this:
> - load the file, compile it and apply a first round of 'quick'
> optimizations for the first time and mark it as passed once;
> - next request, load the compiled version, apply another round of
> optimization then mark it as a second pass
> - repeat the above step until the optimization passes in the said file
> = opcache.passes value
>
> This way only the initial requests will be affected by this but in a
> way that the hit on those requests is smaller that applying all the
> steps at once.
> I'm really not sure if it's that easy to implement but 'on paper' this
> could be the way to solve it imho.
>
> What do you think, does it make sense?
>
>
>
> Best regards
> ----
> Florin Patan
> https://github.com/dlsniper
> http://www.linkedin.com/in/florinpatan
>

It could be a way out for heavy optimizations. Question is - will there be
any? :)

Reply via email to