Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:105100 Return-Path: Delivered-To: mailing list internals@lists.php.net Received: (qmail 67549 invoked from network); 5 Apr 2019 12:04:24 -0000 Received: from unknown (HELO mail-vk1-f171.google.com) (209.85.221.171) by pb1.pair.com with SMTP; 5 Apr 2019 12:04:24 -0000 Received: by mail-vk1-f171.google.com with SMTP id d15so1277301vka.8 for ; Fri, 05 Apr 2019 02:00:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=c4XdWCjAUqXfTOFlujW7LebWcHvBW/8yD82+zUnrY9w=; b=EMNYAizyXrP9IRrRE6LOAJE85UFEWpbO0Vn0zJGxtWOQSoSqo3fOKvikFcNnTfzbzH +yO7pBFNk12rKSymZFhvN/vUvCuN8zvARdghW83X8Oo5z6NL+DwwCJ+b5/Uw3p9OCje1 TRkkbjGmoe406j76GC7XEtepGdqwkQGQr4xBM5SoYk4l+GDtWPk8PcdxBhOFc+g+P8yc rdLL3DvHxuCW2B4pMF4APVLGnbteS4p+VBe4rh3hkP+y5sjinDc4ft2wKjcvnn0BV+PN wOGDouGtG0DkwR3Zd0D1pgbIl3P87ZFV5zacqQBXU/UVTncvsKzJcU4rDeJgrPnj/L0y QfCQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=c4XdWCjAUqXfTOFlujW7LebWcHvBW/8yD82+zUnrY9w=; b=YLj0dBHunwJzSEECU4Cdi3Oj2Br4lac9c7LuUiGph0u5yF2wdkxr5WvVaLpAn963v7 e0vBbb9BWC3G0qdkxr0Jm1iNmFVLcelBJ7SGWNg/OaYInbKXSUf8RRVRCbV8lqSLodjM Ej459Tzgzhm+mEkMAO1lVtaeB/+P43O5LbWDQhmzgkeXq7182yHakzbxBIeWzDY/YmlC QmYa0RpksQRdzXzcIfCTSueMnVKSizO8MAIu3v/b0fGngNV4UNCsTZQWsar34nLie3dS fZRLztrGvi7O9LGPKueaSWKgEcJanf2PEDhPNsL6MtBC176yx8JpMhbIpw84V4pQwFNK NMcw== X-Gm-Message-State: APjAAAU3vGrCRtSvbh1fJt5MS5RyWOrMKvudFH0qR50fnLgARQrZFVjy bmnR6GgwXDlHnIajvBMKNTEIdmzuCfT4ezQYCgk= X-Google-Smtp-Source: APXvYqyI/dBWVnGlB3tEFtIcDQuWbXhh96MaK6W1ZPcW7GuyJezpxnfhEXu9UUeYWYf1vbmmwuf87f5FgnhsVrLiDgk= X-Received: by 2002:a1f:8f0d:: with SMTP id r13mr6870889vkd.63.1554454815112; Fri, 05 Apr 2019 02:00:15 -0700 (PDT) MIME-Version: 1.0 References: <20190405072630.E2A025FB14@mx.zeyos.com> In-Reply-To: <20190405072630.E2A025FB14@mx.zeyos.com> Date: Fri, 5 Apr 2019 11:00:03 +0200 Message-ID: To: Benjamin Coutu Cc: PHP internals , Dmitry Stogov , Nikita Popov Content-Type: multipart/alternative; boundary="00000000000013024c0585c4b733" Subject: Re: [PHP-DEV] Optimize zend_string equality check with hash key From: george.banyard@gmail.com ("G. P. B.") --00000000000013024c0585c4b733 Content-Type: text/plain; charset="UTF-8" On Fri, 5 Apr 2019, 09:26 Benjamin Coutu, 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 --00000000000013024c0585c4b733--