diff options
author | Dmitry Stogov <dmitry@zend.com> | 2014-06-05 19:14:47 +0400 |
---|---|---|
committer | Dmitry Stogov <dmitry@zend.com> | 2014-06-05 19:14:47 +0400 |
commit | 1b8916886b5b3b88ebe016ea311951b21db93ddd (patch) | |
tree | 83924e8f074c363e5c9d4b23ea12c31234065b79 /Zend/zend_operators.c | |
parent | 730beec16e46f34267b5a876b2a0be2917c32ba4 (diff) | |
download | php-git-1b8916886b5b3b88ebe016ea311951b21db93ddd.tar.gz |
Speedup string equality check
Diffstat (limited to 'Zend/zend_operators.c')
-rw-r--r-- | Zend/zend_operators.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/Zend/zend_operators.c b/Zend/zend_operators.c index 0c9f530b6c..caf5e78a42 100644 --- a/Zend/zend_operators.c +++ b/Zend/zend_operators.c @@ -1724,15 +1724,19 @@ ZEND_API int compare_function(zval *result, zval *op1, zval *op2 TSRMLS_DC) /* { return SUCCESS; case TYPE_PAIR(IS_STRING, IS_STRING): + if (Z_STR_P(op1) == Z_STR_P(op2)) { + ZVAL_LONG(result, 0); + return SUCCESS; + } zendi_smart_strcmp(result, op1, op2); return SUCCESS; case TYPE_PAIR(IS_NULL, IS_STRING): - ZVAL_LONG(result, zend_binary_strcmp("", 0, Z_STRVAL_P(op2), Z_STRLEN_P(op2))); + ZVAL_LONG(result, Z_STRLEN_P(op2) == 0 ? 0 : -1); return SUCCESS; case TYPE_PAIR(IS_STRING, IS_NULL): - ZVAL_LONG(result, zend_binary_strcmp(Z_STRVAL_P(op1), Z_STRLEN_P(op1), "", 0)); + ZVAL_LONG(result, Z_STRLEN_P(op1) == 0 ? 0 : 1); return SUCCESS; case TYPE_PAIR(IS_OBJECT, IS_NULL): |