diff options
author | Xin Hu <Xin.A.Hu@intel.com> | 2015-12-15 00:39:34 -0500 |
---|---|---|
committer | Ruben Ayrapetyan <r.ayrapetyan@samsung.com> | 2016-01-14 19:55:13 +0300 |
commit | ba95cb010ab7a5fee516e6a0555feec6ea67234e (patch) | |
tree | 9deb2c70e2c1e95aaf74a4af96a271263d7ef023 /jerry-libc | |
parent | f6bd5afa429a14ad6288cbe63df54f67afd1ac85 (diff) |
Update strcmp implementation, to improve performance
JerryScript-DCO-1.0-Signed-off-by: Xin Hu Xin.A.Hu@intel.com
Diffstat (limited to 'jerry-libc')
-rw-r--r-- | jerry-libc/jerry-libc.c | 40 |
1 files changed, 10 insertions, 30 deletions
diff --git a/jerry-libc/jerry-libc.c b/jerry-libc/jerry-libc.c index 4db3063c..5e973ded 100644 --- a/jerry-libc/jerry-libc.c +++ b/jerry-libc/jerry-libc.c @@ -156,43 +156,23 @@ CALL_PRAGMA (GCC diagnostic pop) /** Compare two strings. return an integer less than, equal to, or greater than zero if s1 is found, respectively, to be less than, to match, or be greater than s2. */ int -strcmp (const char *s1, const char *s2) +strcmp (const char *str1, const char *str2) { - size_t i; - if (s1 == NULL) - { - if (s2 != NULL) - { - return -1; - } - else - { - return 0; - } - } - if (s2 == NULL) + int s1; + int s2; + do { - return 1; - } + s1 = *str1++; + s2 = *str2++; - for (i = 0; s1[i]; i++) - { - if (s1[i] > s2[i]) - { - return 1; - } - else if (s1[i] < s2[i]) + if (s1 == 0) { - return -1; + break; } } + while (s1 == s2); - if (s2[i]) - { - return -1; - } - - return 0; + return (s1 < s2) ? -1 : (s1 > s2 ? 1 : 0); } /** Compare two strings. return an integer less than, equal to, or greater than zero |