Basic string comparison functions still use old parameter parsing API
| From: | Benjamin Coutu | Date: | Wed, 07 Jun 2017 17:15:01 +0000 |
| Subject: | Basic string comparison functions still use old parameter parsing API | ||
| Groups: | php.internals | ||
| Request: | Send a blank email to internals+get-99436@lists.php.net to get a copy of this message | ||
Hi Dmitry,
I just noticed that all basic string comparison functions in Zend/zend_builtin_functions.c,
especially "strcmp", "strncmp", "strcasecmp", "strncasecmp"
still use the old and inefficient parameter parsing API, unlike similar functions in
ext/standard/string.c such as "substr_compare", "strtok", "str(i)str",
"str(i)pos", "strr(i)pos", "strrchr" that already consistently use the
new efficient macro-based API.
I think one can consider "str(n)cmp" and "str(n)casecmp", etc. at least as
important as "substr_compare", especially considering that these are wrappers around very
basic functions that often get called in very hot code or inside tight loops (e..g. sorting). I
therefore recommend changing those 4 functions in Zend/zend_builtin_functions.c to use
ZEND_PARSE_PARAMETERS_* macros for PHP 7.2.
What do you think?
--
Benjamin Coutu
ZeyOS, Inc.