On Sat, Feb 28, 2015 at 12:55 AM, Andi Gutmans <a...@zend.com> wrote:

> > On Feb 27, 2015, at 11:36 AM, Anthony Ferrara <ircmax...@gmail.com>
> wrote:
> >
> > Dmitry,
> >
> >>> That's not to say there's anything wrong with this approach, nor that
> >>> there isn't a ton we can learn from it. I think it's a fantastic
> >>> research effort and plan on digging through it myself. Thank you for
> >>> open sourcing it.
> >>
> >>
> >> Thanks for good words :)
> >>
> >> This work may be adopted for some specific cases.
> >> 25-30 times speedup on Mandelbrot allows usage for numeric calculation
> >> instead of C.
> >>
> >> https://gist.github.com/dstogov/12323ad13d3240aee8f1
> >>
> >> anyone may repeat the language battle :)
> >
> > These tests seem really odd. A 15% speed advantage over GCC -O2? Sure,
> > it's possible. But I don't think it's likely. It really smells to me
> > like bias in the testing methodology. (and the lack of an -O3 result
> > is suspicious as well).
> >
> > And looking at the code, I can see why. The PHP version is writing to
> > an internal buffer, while every other version has to write to STDOUT
> > on every single iteration.
> >
> > So you are intentionally not benchmarking the output in the PHP
> > version (you even explicitly call ob_start()) but are benchmarking it
> > in every other version. So in fact, the PHP code does something
> > different than the rest of the code.
>
> We actually discussed this at the time of the results.
> IIRC it really has nothing to do with the output mechanism, etc.. The
> benchmark does enough iterations and very little output that the impact
> there is negligible (you can test this yourself to see if I am right but I
> am pretty sure I am).
> It is due to the fact that at runtime LLVM can optimize better to the
> architecture than a static standard gcc build. Constraining gcc with the
> right architecture dependent switches upfront will also improve the gcc
> results. Anyway, still pretty cool to see this although it has very little
> impact (if any) on real world apps ala Magent, WordPress, Drupal, ...
>
> I think the important learning is that faster synthetic benchmarks have
> very little impact on overall application performance. Sure it can have an
> impact on specific algorithmic pieces of code but that’s the exception not
> the norm. No doubt there are other ways to write JIT including tracing JITs
> etc. but I do think we found that we are more bound by I/O and
> memory/caches than the quality of the machine code as the engine is already
> quite tight. And with apps consuming more and more Cloud services the I/O
> bottleneck issue looks grimmer than ever! :) That also comes across
> consistently in benchmarks of PHP 7 vs. hhvm on real-world apps - you see a
> JIT and non-JIT platform pretty much head to head on performance and
> actually on the complex stuff PHP 7 is often faster.
>
> Anyway, definitely makes sense to continue to look at these kind of
> opportunities down the road but PHP 7 is such a huge step-up on real world
> application performance I think getting that out the door is the biggest
> possible short-term win when it comes to performance. Looking forward to
> seeing folks dig into the code and have ideas down the road!!
>

Completely agree. And have to say that these experiments with JIT leaded us
to understanding of real PHP-5 bottleneck, that allowed us to make about
60% improvement on real-life in PHPNG and already near 2 times in PHP7.

But LuaJIT without JIT is 4 times faster on Mandelbrot. It's a challenge...

Thanks. Dmitry.



>
> Andi
>
>

Reply via email to