Messages in this thread Patch in this message | | | Date | Tue, 16 Jun 2015 13:51:55 -0500 | From | Orestes Leal Rodriguez <> | Subject | [PATCH 1/1] lib: small update for strlen, strnlen, use less cpu instructions |
| |
Very small update to strlen and strnlen that now use less cpu instructions by using a counter to avoid the memory addresses substraction to find the length of the string.
Signed-off-by: Orestes Leal Rodriguez <lukes357@gmail.com> ---
diff --git a/lib/string.c b/lib/string.c index 992bf30..c873436 100644 --- a/lib/string.c +++ b/lib/string.c @@ -17,6 +17,10 @@ * * Sat Feb 09 2002, Jason Thomas <jason@topic.com.au>, * Matthew Hawkins <matt@mh.dropbear.id.au> * - Kissed strtok() goodbye + * + * * Tuesday June 16 2015, Orestes Leal Rodriguez <lukes357@gmail.com> + * - strlen, strnlen: by using a single counter we use less cpu instructions + * by avoiding substracting the memory addresses before return */
#include <linux/types.h> @@ -401,11 +405,11 @@ EXPORT_SYMBOL(strim); */ size_t strlen(const char *s) { - const char *sc; + size_t sz = 0;
- for (sc = s; *sc != '\0'; ++sc) - /* nothing */; - return sc - s; + for (; *s++ != '\0'; sz++) + /* empty */; + return sz; } EXPORT_SYMBOL(strlen); #endif @@ -418,12 +422,13 @@ EXPORT_SYMBOL(strlen); */ size_t strnlen(const char *s, size_t count) { - const char *sc; + size_t sz = 0;
- for (sc = s; count-- && *sc != '\0'; ++sc) - /* nothing */; - return sc - s; + for (; count-- && *s++ != '\0'; sz++) + /* empty */; + return sz; } + EXPORT_SYMBOL(strnlen); #endif
| |