Re: Optimize zend_string equality check with hash key
| From: | G. P. B. | Date: | Fri, 05 Apr 2019 09:00:03 +0000 |
| Subject: | Re: Optimize zend_string equality check with hash key | ||
| References: | 1 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-105100@lists.php.net to get a copy of this message | ||
On Fri, 5 Apr 2019, 09:26 Benjamin Coutu, <ben.coutu@zeyos.com> wrote:
> Hello,
>
> I was surprised to find out that equality checks on zend_string do not
> take advantage of the fact that in many cases we have a hash key available
> that can be utilized in a quick bailout path without having to resort to a
> costly
memcmp on the value.
>
> I recommend to modify zend_string_equal_content like so:
>
> static zend_always_inline zend_bool zend_string_equal_content(zend_string
> *s1, zend_string *s2)
> {
> if (ZSTR_LEN(s1) != ZSTR_LEN(s2)) {
> return 0;
> }
>
> if (ZSTR_H(s1) && ZSTR_H(s1) != ZSTR_H(s2)) {
> return 0;
> }
>
> return zend_string_equal_val(s1, s2);
> }
>
> Thoughts?
>
> --
>
> Benjamin Coutu
> ben.coutu@zeyos.com
>
Best idea would be to do a PR on the GitHub repo.
Best regards
George Peter Banyard