From: Dmitry Stogov Date: Tue, 21 Apr 2015 20:27:44 +0000 (+0300) Subject: Slight zend_hash_find() optimization. X-Git-Tag: PRE_PHP7_NSAPI_REMOVAL~189 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=c9da004a1884f54ad69b8b66e585f1ba451e84ee;p=php Slight zend_hash_find() optimization. --- diff --git a/Zend/zend_hash.c b/Zend/zend_hash.c index 0dba9f39de..fcb51f6a2f 100644 --- a/Zend/zend_hash.c +++ b/Zend/zend_hash.c @@ -408,13 +408,14 @@ static zend_always_inline Bucket *zend_hash_find_bucket(const HashTable *ht, zen arData = ht->arData; nIndex = h | ht->nTableMask; idx = HT_HASH_EX(arData, nIndex); - while (idx != HT_INVALID_IDX) { + while (EXPECTED(idx != HT_INVALID_IDX)) { p = HT_HASH_TO_BUCKET_EX(arData, idx); - if (p->key == key || /* check for the the same interned string */ - (p->h == h && - p->key && - p->key->len == key->len && - memcmp(p->key->val, key->val, key->len) == 0)) { + if (EXPECTED(p->key == key)) { /* check for the the same interned string */ + return p; + } else if (EXPECTED(p->h == h) && + EXPECTED(p->key) && + EXPECTED(p->key->len == key->len) && + EXPECTED(memcmp(p->key->val, key->val, key->len) == 0)) { return p; } idx = Z_NEXT(p->val);