Re: Idea of optimizing php !empty(...) expression.
| From: | Christoph Becker | Date: | Sun, 08 Feb 2015 00:35:51 +0000 |
| Subject: | Re: Idea of optimizing php !empty(...) expression. | ||
| References: | 1 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-82105@lists.php.net to get a copy of this message | ||
Oleg Serov wrote:
> I use !empty() very often and decided to make a benchmark test.
>
> Here is the code and results: http://pastebin.com/fMhhdQiW
>
> if (!empty(...)) working on 23% slower than if (empty()) expression.
>
> So if create new operator not_empty() it will improve performance.
>
> The first question is: What do you think about optimizing !empty(...), do
> we need it ?
>
> And I see two way to make this happen.
>
> 1. Create new language entity "not_empty".
> 2. Improve parser and help to handle "!empty" calls different way.
>
> It is obviously that option 2 is better. Is it real to optimize parser that
> way?
I see a third way: optimize this on the OPcode level, i.e. BOOL_NOT(X) +
JMPZ(T) -> NOP, JMPNZ(X). That is already done by OPcache[1].
[1] <http://lxr.php.net/xref/PHP_5_5/ext/opcache/Optimizer/block_pass.c#816>
--
Christoph M. Becker