On 5/21/11, Sebastian Bergmann <sebast...@php.net> wrote:
> On 05/20/2011 11:28 AM, Dmitry Stogov wrote:
>> The bench.php gets more than 10% speedup (2.5 sec instead of 2.9 sec)
>> Real-life applications are not affected. All the PHPT tests are passed.
>
>   I chatted with Kore Nordmann, the creator of Image_3D (raytracer written
>   in PHP) and ezcGraph (chart component in the Zeta Components library)
>   last night. His code will definitely benefit from these improvements.
>
>   Another performance improvement with regards to math functionality in
>   PHP could be compiling math functions such as abs() into specialized
>   opcodes thus alleviating the function call overhead that is otherwise
>   incurred. Kore mentioned, for example, that Xdebug and KCacheGrind
>   currently show that most time is spent in several hundred thousand calls
>   to abs() while running the component's test suite.

What platform was that on?  GCC already inlines its builtins by
default (even at -O0).  I.e., the abs() generates the following code:

       movl    -4(%rbp), %eax
       movl    %eax, %edx
       sarl    $31, %edx
       movl    %edx, %eax
       xorl    -4(%rbp), %eax
       subl    %edx, %eax

I think it's wrong to do the md inlines in PHP itself for couple reasons:

       - There's a huge list of such md functions;  esp. the fp ones
would show bigger benefits.  However inlining each one of them is
infeasible.

       - The inlines are platform-dependent, so this would only
benefit a few platforms.

       - It is generally a wrong level to do such optimizations--this
is a compiler's job.

If your profiling shows that there's a function worth a md inline and
compiler doesn't already do that, submit a bug for your compiler
vendor.  (-;

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

Reply via email to